找回密码
 注册
查看: 4304|回复: 0

使用expect实现远程ssh命令执行和scp拷贝文件

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2019-2-6 10:27:44 | 显示全部楼层 |阅读模式
使用expect实现远程ssh命令执行和scp拷贝文件

+ V4 l  A' O, f8 Sfunction ssh_exec () {
( [; t3 Y: B: L$ x( @    local ip=$11 V3 d9 L* |- |* A/ D# U
    local passwd=$2/ z, R% j( u) w$ B( ~; D1 V
    local cmd=$3- U* S3 e( \* l/ X; Q0 B
    [ -z "$ip" -o -z "$passwd" -o -z "$cmd" ] && return 1
* B# k9 k* v) P2 i' H    /usr/bin/expect << EOF. u1 Q) P9 H- f- h+ Y2 m( t& M! J! l6 D
    proc remote_exec {ip passwd cmd} {
" m2 Q9 Y* Q# p5 \        spawn ssh [url=]root@\$ip[/url]$ A- x9 E' `2 q( H5 b( g
        exp_internal 02 L' n5 E$ H( r4 V* O+ ]4 j- L4 u
        expect {
3 a9 `- T0 p0 \$ w9 t            "yes/no" { send "yes\\r";exp_continue}
% Q/ o/ e8 K/ U0 _) C. E8 {            "*password:" {send "\$passwd\\r"}
  p; }. c4 H- {& \        }
( c. v8 v: g* P% ]% }6 v5 w2 S        expect "*#"# n/ B% \& m6 u/ t) p/ k: X  G. v
        send "\$cmd\\r"
% O0 f% r0 E% J+ I' T        expect "*#"
2 x  T9 y% M6 @4 |5 N        send "exit"* Y' j3 z7 D0 B" \
        close& g) t! ]+ x2 `; n- R2 P9 d6 O' n
    }- b/ ?4 d5 v6 R$ N' H# S) ]( U7 I

, {. |5 V" o- ~* c    remote_exec "$ip" "$passwd" "$cmd"! {  H( d6 F) u$ m
EOF
6 o4 s5 v" C* ]1 N}& X) F* h4 p% a* l/ G- h* b
) f; ^: z+ c0 c9 q& [$ ]
function scp_get () {- x1 d7 ]. h4 z/ z: F
    local ip=$1( a9 g1 ?4 E+ @) {# J. w
    local passwd=$2% B- _3 [- I- ^- o
    local src=$3
; {7 u1 i1 |5 e9 Y3 D- Y4 ^- J    local dst=$4' c( p0 W! V, j2 w- X

; ~3 M2 Z# a  A+ o    [ -z "$ip" -o -z "$passwd" ] && return 1
( Q' _2 W' D3 j2 ?    /usr/bin/expect << EOF% E" `: n& |# n7 z- D3 ^# k
    proc remote_exec {ip passwd src dst} {2 N$ U' V# R& n( f0 z2 r
        spawn scp [url=]root@\$ip:\$src[/url] \$dst
- i2 z  b1 g3 @# v        exp_internal 0
5 N) k; c% z8 u( H        expect {% }3 W  V) k7 p+ D# S* S1 s, H/ }+ U
            "yes/no" { send "yes\\r";exp_continue}4 X' r  q+ @& k( k' E' [. Z! A) K
            "*password:" {send "\$passwd\\r"}& z! s2 N+ G2 v- d2 a" X% m
        }$ ^! @+ ~0 @: L" D
        expect eof1 q* o# Z( ?' I- {% P1 i
    }
. {7 k0 g% k( x
& f4 f3 b7 `0 C2 r5 i5 q    remote_exec "$ip" "$passwd" "$src" "$dst"9 ?) j3 K/ d4 I' _
EOF4 m$ y8 Y3 g$ f, ?
}! J7 {7 T0 O# G0 Z; Q# T
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 04:23 , Processed in 0.035746 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表