易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 4301|回复: 0
收起左侧

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

[复制链接]
发表于 2019-2-6 10:27:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

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

$ i) T9 R8 W- j# P3 Sfunction ssh_exec () {
/ w: p  v4 p/ r0 B8 U& Q& V    local ip=$1) [; t8 E0 h; e6 U& m
    local passwd=$2
8 A6 V6 G$ u) U& W    local cmd=$3! Y0 f% `- b4 D7 ~( M
    [ -z "$ip" -o -z "$passwd" -o -z "$cmd" ] && return 1, t/ w5 z) J, ?, W' M+ S& }
    /usr/bin/expect << EOF; K7 x0 ?6 d) T) N
    proc remote_exec {ip passwd cmd} {
. ^% B  K5 G8 a" |+ Q        spawn ssh [url=]root@\$ip[/url]
. ]/ {% ]" j( w0 v) |; j        exp_internal 0
4 F, F8 h. U. h4 ~        expect {
9 N6 Y; A; `# _* C  l) q) a) m            "yes/no" { send "yes\\r";exp_continue}
  c* G! K- F8 k% ?+ R& Y* K, ]6 ?            "*password:" {send "\$passwd\\r"}
0 c1 J" F" I/ G( h1 a( y8 l* t. l        }
* T( Y# f$ Z- S6 N        expect "*#"
* ^9 ?' ]5 s2 M8 K1 [        send "\$cmd\\r"; Y% M1 N/ T! O6 S! N) O8 Y# r; n
        expect "*#"% g9 L% Z% g: S, x0 Y+ g5 Y
        send "exit"9 w* Y: P+ U' f* d% J9 U: K& `
        close$ b! ?; m5 q9 `" K9 v# t
    }9 \3 m' b0 U/ c% l9 d  e* N1 r! E

) B4 s8 L% P! n( ?( v    remote_exec "$ip" "$passwd" "$cmd"
8 ^1 @) n+ o! |$ o2 MEOF( G, i- M. g$ ?5 n' r/ e# z  P6 v
}
, m8 O- t7 D3 ?* c% c
6 K8 @% {' {5 F8 V  |function scp_get () {
2 V5 x1 ]4 u7 Q    local ip=$1$ K0 R2 _/ ?" M3 x, R" a0 o  v+ J
    local passwd=$2! O1 v% F9 W1 R" e
    local src=$37 t9 K6 T& Z% T8 Y  r" F
    local dst=$4! F) ]0 D) T1 `+ b

* p; l2 c" e6 R9 A8 q/ ], @% |( M    [ -z "$ip" -o -z "$passwd" ] && return 1
% g% ]* u, {$ p5 r    /usr/bin/expect << EOF8 F5 T9 K2 V& `4 k1 ]! m; y5 ^( M
    proc remote_exec {ip passwd src dst} {
+ ^1 b7 a3 t4 x( X7 p( i        spawn scp [url=]root@\$ip:\$src[/url] \$dst1 Y8 q; v, J8 K: p
        exp_internal 04 f( Y: A  ?$ R! X9 W  ~# ?* a8 o
        expect {
: V- {  T) f! `, N            "yes/no" { send "yes\\r";exp_continue}9 H: P. N  ^: ]' L6 R
            "*password:" {send "\$passwd\\r"}
3 F/ V( r, ~4 a$ k3 Z$ G        }
) @5 X/ Z9 K& h        expect eof  K, a: e: B% C& `
    }
4 F2 `9 m) F% I: G, z! ]& k) m 1 g+ e- m+ b$ k9 B( K! G
    remote_exec "$ip" "$passwd" "$src" "$dst"2 z; T( d. ^+ G' \& N
EOF
# u8 E9 b9 O5 z2 l2 ?# ?}
3 x; `- K( C9 q6 x2 W$ x' y
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:40 , Processed in 0.044842 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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