shell脚本之 对于 非ssh expect 免密登陆问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shuimofengyang/article/details/84345762

背景:一般为了安全hadoop生产集群与公司其他服务器不能ping,不能互相ssh免密登录的。绝大多数是hadoop集群服务器可以有账号密码可以登录到其他服务器,但其他服务器,不可以登录到公司hadoop集群服务器。业务需要 从一台非业务服务器上scp拉取数据,这时用到 expect远程登录

先看有无 安装  rpm -qa |grep expect

有略过此步骤,没有 安装  yum install expect

注意点:脚本是  业务_功能.exp

脚本:

#!/usr/bin/expect 
#默认是秒,-1是一直保持连接
#set timeout 1000
set passwd "xxxx"
spawn scp -r [email protected]:/home/work/thunderbird_loaded /opt/user/work/thunderBird/

#如果遇到提示
expect "*password:*"

#则 \n回车确认
send "$passwd\n"

#如果服务器你的账号是普通用户则  ]$,超级用户是 ]# ,这里用]*通配符
expect "]*" 

#这里我这业务完了遇到]*就退出,不能一直让它挂着。
send "exit\r"
expect eof

例二:

#!/usr/bin/expect 
#defalut s
#set timeout 1000
set passwd "xxxxxx"

#登录
spawn ssh [email protected]
expect "*password:*"
send "$passwd\n"
expect "]*" 
send "rm -rf /home/work/thunderbird_loaded/*\n"
expect "]*" 
send "exit\r"
expect eof

执行命令      expect 业务_功能.exp

如果想更多更快速了解,看看这篇文章:https://www.cnblogs.com/iops/p/expect-tutorial-and-example.html

猜你喜欢

转载自blog.csdn.net/shuimofengyang/article/details/84345762