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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

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

7 j. ], K1 D+ a' q2 n8 ]5 z; kfunction ssh_exec () {
9 f7 c1 b0 V3 `% r7 s1 n& q    local ip=$1
. t+ [" W. [5 y" J    local passwd=$2
2 A6 X/ a, b3 _. ^+ p    local cmd=$3) z8 A7 E5 ?1 r4 ^: M( y
    [ -z "$ip" -o -z "$passwd" -o -z "$cmd" ] && return 1
6 V! j# }! d/ a4 w" Y    /usr/bin/expect << EOF2 O8 j5 N  G1 [7 ?/ Z+ C
    proc remote_exec {ip passwd cmd} {
( s1 u+ b9 A5 S8 S! D        spawn ssh [url=]root@\$ip[/url]
$ q' i" y9 k: g* h. _        exp_internal 0% B( d6 u& v1 Y! j
        expect {
  O, l* }& i2 B0 A# s! V8 r            "yes/no" { send "yes\\r";exp_continue}
% j) L6 N5 a2 V3 j            "*password:" {send "\$passwd\\r"}. d" \5 X1 d0 \0 _
        }
( N$ M; _6 N8 ]. A; e# r+ y6 M        expect "*#"
% S9 A( E2 r, f4 ?        send "\$cmd\\r") X; x$ C' v' F
        expect "*#"
1 T! k; k/ P! ~: [        send "exit"
: b8 k3 L& W9 g7 D( E        close
. u0 t7 r5 ^$ O! o) Q. G. k    }
: Y- x  N* E- v$ g6 A* g* X 6 v. I  A, d3 W% d
    remote_exec "$ip" "$passwd" "$cmd"" I- A8 y  h0 i
EOF0 b: p$ ]) a9 @; x1 P8 J
}
. X, {1 |8 c) g: L, _  }9 N, u ) V+ F+ F; B, g* N, e! V: L7 O) F
function scp_get () {- J& ~2 v" r3 l$ X& `; o; q4 p
    local ip=$12 k* D4 E8 C% ?+ k$ I3 f
    local passwd=$2
: d& F. P& f0 E) A3 C. E9 W    local src=$3- J( L" O/ F" w0 Q) A# A
    local dst=$4
( X$ f/ D$ h' a1 X3 W) @( V
" j# B7 D7 F, _+ a; }3 E: W    [ -z "$ip" -o -z "$passwd" ] && return 1# Y' _7 g$ f, x  N& r: J' |
    /usr/bin/expect << EOF5 P: @, S6 H5 ?# a* P, {7 O
    proc remote_exec {ip passwd src dst} {
- F- q% b/ C1 b        spawn scp [url=]root@\$ip:\$src[/url] \$dst
) `! f6 ]" T( ~6 e5 M6 q/ |1 w        exp_internal 01 F% Z- e5 v2 P6 }  i: B
        expect {/ i0 b& B* G- R( w" u4 P3 f
            "yes/no" { send "yes\\r";exp_continue}- b+ F2 U! h& h9 }* W
            "*password:" {send "\$passwd\\r"}+ N3 j8 w- S+ [
        }
) |6 t% b; n6 E3 c        expect eof1 M, `/ x2 F3 k0 f" a0 ^
    }
8 \( j4 g+ a! Y/ c
7 p. X+ ?6 v6 b7 k    remote_exec "$ip" "$passwd" "$src" "$dst"4 T* Q/ E# B8 o6 n" y
EOF
0 L6 b* C( _$ x9 t& [4 J3 |}
+ i$ q$ t; `0 [9 g9 S
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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