背景:一般为了安全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 work@10.68.9.30:/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 work@10.68.9.30
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