易陆发现互联网技术论坛

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

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

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

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

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

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/ ?
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

GMT+8, 2026-4-8 21:38 , Processed in 0.040395 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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