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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

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

9 P' ~  P/ e3 K# Afunction ssh_exec () {4 t9 K2 v& I+ r+ T
    local ip=$1
6 o" C0 C5 ~* v' E4 l: {! F    local passwd=$2
' e2 }# D; Z5 E    local cmd=$3
3 e8 y  m4 u. ?, e/ }5 U5 @- e% X- f: A    [ -z "$ip" -o -z "$passwd" -o -z "$cmd" ] && return 1
: r1 v! h1 L& a) n% V* c4 B0 I    /usr/bin/expect << EOF& f7 c7 l, T% d3 D) d9 N. ?
    proc remote_exec {ip passwd cmd} {
. {3 C8 d# V  R% D: w) |' j# z        spawn ssh [url=]root@\$ip[/url]
! I6 d; D7 E* X' p! N$ R& ]) w        exp_internal 0
3 |* }" L% s8 p. j6 \: r6 ~4 P  Y, d        expect {! v1 @+ I# C& |# ?8 a
            "yes/no" { send "yes\\r";exp_continue}
' b% J, c+ Y& D            "*password:" {send "\$passwd\\r"}" `3 B0 p  U5 v8 V. I
        }
( A& i+ }9 x& P$ R2 V        expect "*#"
+ m' d) K" L: w0 U$ k0 |5 F& L        send "\$cmd\\r"
$ p" j, h: e+ m( D  s5 z        expect "*#"
5 F( D( W1 }3 |8 L        send "exit"- h* t1 j' w: ~: X
        close
! S2 |& L& M% f( {7 G    }# d+ f* E- l% |7 E& C
1 q$ O( ~6 o7 ~8 o- h. @1 f& X; @
    remote_exec "$ip" "$passwd" "$cmd"
2 q' t+ I+ d7 \! J6 D, \9 dEOF. R0 R0 x: {$ d, I! Q
}' d/ ~0 t' [- ?4 `, Z
  P3 W0 J1 ?" K
function scp_get () {( l+ \5 [( @# g- ~3 h( R* {& L% v
    local ip=$1- _, I8 D7 ]4 E9 }* G5 ?5 {
    local passwd=$2& p4 V( s6 X8 V, B. v; C
    local src=$3
) {( C8 o  h; e    local dst=$45 S/ v; g' F/ Y9 Q9 Y$ Y

. r& e2 o, G2 X    [ -z "$ip" -o -z "$passwd" ] && return 1
. I0 [4 @& Y: d$ `; @3 s    /usr/bin/expect << EOF
% Q( ?& C7 ]3 T: J/ P0 b% Z8 @    proc remote_exec {ip passwd src dst} {
; Q' E4 a5 n1 W2 w6 E0 F4 i        spawn scp [url=]root@\$ip:\$src[/url] \$dst
1 f$ |0 z) q( k        exp_internal 0& N4 \# ?! j# b8 H( p; I" d# f' N
        expect {
# j4 d' r' |  A            "yes/no" { send "yes\\r";exp_continue}
8 u0 f; B, f+ r            "*password:" {send "\$passwd\\r"}
) P1 R. T% G' s) @6 t        }& [! Z, O, r; [- I$ D
        expect eof
4 w! W. h1 @; p- Z; e9 E    }
* B9 X. \$ D0 O0 m
, ]4 G7 u3 z* G  _8 b9 @; ?    remote_exec "$ip" "$passwd" "$src" "$dst"# G. U3 ~- q6 [! {, k+ u
EOF
  z+ E" w. Y& [) r  \# N$ E}
1 I( K! U1 w( f
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 03:27 , Processed in 0.018831 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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