Linux文件远程传输脚本,linux shell脚本嵌套expect 实现远程ssh登入,传送文件

目的:linux shell脚本嵌套expect 实现远程ssh登入,登入后执行一个命令,将命令保存到一个文件,利用scp传送文件到本地指定目录下面。

另外,附加几个网上的例子。

个人觉得将下面的几个shell看懂。基本上就掌握了初步的expect 用法

远程连接对方机器 执行命令,将结果保存到文件 远程传送过来,本机读取数据判断

#!/bin/bash

/usr/bin/expect >/dev/null 2>&1 <

set timeout 30

spawn ssh root@192.168.2.128

expect "*password:"

send "123456\r"

expect "*#"

send "service heartbeat status >/tmp/status \r"

spawn scp  root@192.168.2.128:/tmp/status /root/ceshi-heartbeat/

expect "*password:"

send "123456\r"

expect "*#"

exit

expect eof

EOF

cat status|grep "heartbeat OK" >/dev/null 2>&1

[ $? = 0 ]&& echo "OK"

[ $? != 0 ]&& echo "not OK"

、使用脚本文件的例子--实现自动输密码

#!/usr/bin/expect -f

set password 123456

#download

spawn scp root@192.168.1.218:/root/a.wmv /home/yangyz/

set timeout 300

expect "root@192.168.1.218's password:"

set timeout 300

send "$password\r"

set timeout 300

send "exit\r"

expect eof   www.2cto.com

3、在sh脚本中嵌入expect的例子--通过连上一个公网的服务器再转跳到一个内网的服务器上,用脚本实现不用输密码,直接使用./goto.sh servername

#!/bin/bash

passmsmallq10="a"

passzhsh="a"

passfcwr="b"

passwapfx="c"

passadfx="d"

ip1="200.100.10.10"

ip2="10.100.100.70"

ip3="10.100.100.60"

ip4="10.100.100.10"

ip5="10.100.100.20"

case $1 in

"zhsh") passstr=$passzhsh ipstr=$ip2 ;;

"fcwr") passstr=$passfcwr ipstr=$ip3 ;;

"wapfx") passstr=$passwapfx ipstr=$ip4 ;;

"adfx") passstr=$passadfx ipstr=$ip5 ;;

*) echo "The parameter $1 isn't exist"

exit 0 ;;  www.2cto.com

esac

command1="ssh -l m_smallq -p 36000 $ip1"

command2="ssh -l mqq -p 36000 $ipstr"

expect -c "

set timeout 60;

spawn $command1;

expect {

\"221.130.15.10's password:\" {send \"$passmsmallq10\r\"; exp_continue}

\"m_smallq\" {send \"$command2\r\"; exp_continue}

\"mqq's password:\" {send \"$passstr\r\";interact}

}

"

对上面例子的expect的解说

expect -c "..."  --里面输入命令

expect {...}     --里面的多行记录,从上向下扫描匹配,谁先匹配谁先处理。

www.2cto.com

4、ssh到另一台机子执行df -h后退出,要点是send后面可以跟多个命令,通过\r来分行成多个命令

#!/bin/bash

ip1="183.62.178.191"

command1="ssh -l root -p 14322 $ip1"

expect -c "

spawn $command1;

expect {

\"183.62.178.191's password:\" {send \"aa\r\"; exp_continue}

\"root@\" {send \"df -h\r exit\r\"; exp_continue}

}

"

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值