马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
使用expect实现远程ssh命令执行和scp拷贝文件
* V5 y$ _- J, w0 c% k! E& W m5 M5 j) bfunction ssh_exec () {
' i- H9 l8 f& B, W4 s2 v local ip=$1) B- w; C% _; @4 w, D. n
local passwd=$2' D( Q; `' K Z/ `. |: w- u* a
local cmd=$3
$ v9 s: _) t7 z' l6 b/ A' C$ N [ -z "$ip" -o -z "$passwd" -o -z "$cmd" ] && return 1
( `. O% B9 V% y2 ?* v, g$ R1 m /usr/bin/expect << EOF
5 o# X8 w/ i* e. T3 t. j proc remote_exec {ip passwd cmd} {
. M" o9 B+ n& N0 [+ w spawn ssh [url=]root@\$ip[/url]
# \/ T, a! j/ G( q9 k' ^0 u! Q% N S exp_internal 0
" @" g$ T2 ^7 J expect {
' J' b0 H9 A( C0 A "yes/no" { send "yes\\r";exp_continue}
0 A7 W: Y- D; { "*password:" {send "\$passwd\\r"}
& G3 f- X9 c9 H0 {* `' z }
v. R( V; `& {# L expect "*#"
( z7 C, {1 ]+ K7 ?$ ? send "\$cmd\\r"
! t$ ]9 @/ `3 l9 \ expect "*#"
2 e" {: Z- y, g send "exit"
# P4 o1 J* C0 b0 q close! I l/ M9 J8 q: T7 B
}
/ i9 W) o# S R2 g* C# B, E# i4 B , v* g" ~) [3 b/ T: o
remote_exec "$ip" "$passwd" "$cmd"& u0 x! F* Z4 t
EOF
# a8 t' _/ X& @' \; O& h; b}
3 G6 ~* P3 x) q0 U- t
( u- K0 `" ~) e7 q3 N# sfunction scp_get () {& C) D6 Z4 D: B7 Q- k
local ip=$1
1 ]9 S. n* X- w9 [2 z# Q local passwd=$27 C% H5 l9 E3 ? g7 Q
local src=$35 h" {6 u( ^3 P ~8 U
local dst=$46 B' K, J# O! _! f8 z& u! P
* \, f% i o# V, x1 s/ F- s
[ -z "$ip" -o -z "$passwd" ] && return 1
: D+ ^. e' u0 o, |% y- Z /usr/bin/expect << EOF. b) H0 M0 ?2 L( J8 }) |$ E
proc remote_exec {ip passwd src dst} {
0 T; c0 h. ]) h+ s spawn scp [url=]root@\$ip:\$src[/url] \$dst
1 Z. q+ f8 B" w exp_internal 0
( _2 }" {( w6 |2 K2 c: L/ o/ C expect {
1 R+ e+ D! z: E1 o4 r4 Z# [8 v6 d "yes/no" { send "yes\\r";exp_continue}
6 N: k3 H) U/ H+ I D* a! N1 ?! d2 ^ "*password:" {send "\$passwd\\r"}' V# c6 n- h& m2 q; [
}% J: A+ t A- @. ] g) J
expect eof' F! g8 _2 a" m) ^) U$ J+ _; y
}
, C0 H& ?' J H, H$ u5 N' n0 g
8 x6 D: `& h: K, r remote_exec "$ip" "$passwd" "$src" "$dst", P9 a% Q( B. D
EOF
& I0 k- [$ s4 j}( A p3 G, I# [$ l$ O! ` B$ f/ ?
|