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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2019-2-6 10:27:44 | 显示全部楼层 |阅读模式
使用expect实现远程ssh命令执行和scp拷贝文件
3 V/ c7 O$ j1 s; A: B! c, T
function ssh_exec () {3 u) ]2 @9 N2 ]" U' R
    local ip=$1
: \/ w/ A) N! T) Z$ f5 U    local passwd=$2
, p5 n# j' l& G# T    local cmd=$37 \+ w4 G9 }5 p8 p
    [ -z "$ip" -o -z "$passwd" -o -z "$cmd" ] && return 1/ G" R6 F3 h( ^& _/ O( {3 V
    /usr/bin/expect << EOF
* H; Q9 h, ^1 e7 m, F. N# t6 Y7 B    proc remote_exec {ip passwd cmd} {/ F" _$ [$ T$ o7 g% m" W
        spawn ssh [url=]root@\$ip[/url]
- s" \7 s3 |0 k        exp_internal 0
& V6 ~* u2 |" x$ M/ y* e* s0 O0 O        expect {
8 i' u0 v! |3 _$ k# ?            "yes/no" { send "yes\\r";exp_continue}
0 M; \3 H3 P5 C. l5 B            "*password:" {send "\$passwd\\r"}
% I8 X8 t) ~) X6 r        }7 a6 u7 {) y% H% V! Y4 P# M. u
        expect "*#"
5 n: j' O; B! Y2 o3 m. J9 O        send "\$cmd\\r"
! Q2 ?+ U- U' R7 ^0 B        expect "*#"
  p5 V8 U( W6 F8 C+ a        send "exit"/ C) {, v  d3 f2 r3 K
        close# e' o3 [' m) \4 r# r
    }
4 |0 k* R4 P  |; ^ 6 ?# C- \/ u3 n4 V6 R7 P0 @
    remote_exec "$ip" "$passwd" "$cmd"
6 g' Z! n9 @  E% o! yEOF
9 i( j5 ?, ]9 B* ^* g}
7 q6 X  H% w3 Y/ H& i8 ~
" n; L8 _& ?- p- o; _- `( Rfunction scp_get () {4 A4 p1 Y2 v) _# f, ~6 k
    local ip=$1$ a' e1 G' A( N3 U1 E3 H
    local passwd=$2
/ m% @/ X- P! i. b0 b1 S, C    local src=$3
% q( C4 A# I, q3 W. C5 f    local dst=$48 z8 j8 N! O( K: M: {, U
8 ?, ?5 M& k# n( e" T0 g
    [ -z "$ip" -o -z "$passwd" ] && return 1% r$ `8 u! {/ L4 A) K
    /usr/bin/expect << EOF. J! Q. ~# j! ]5 X( Z- e' B
    proc remote_exec {ip passwd src dst} {8 U+ j, C/ V5 j% K" x" x
        spawn scp [url=]root@\$ip:\$src[/url] \$dst
. w6 v0 N4 {; ]1 I        exp_internal 0* a8 ]: W0 f4 {9 H, J! d
        expect {
6 m1 v- K0 ]3 Q' N            "yes/no" { send "yes\\r";exp_continue}( e' [; i# ^% n. N1 ^7 R7 `! h% Q
            "*password:" {send "\$passwd\\r"}2 T- s: x2 T) t3 B- A+ j2 e7 |
        }. M# p4 F; i" v$ G
        expect eof  J7 ^+ M) A) l' `! l  s
    }- _1 e* K1 k5 ~3 @5 C8 W0 P
- `% J7 K/ R( l" @
    remote_exec "$ip" "$passwd" "$src" "$dst"- x/ \0 B0 @/ U. n2 Q' m
EOF
! C# e/ K" j* P7 Q& d}. c( P# C5 H9 x5 k# M
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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