跨服务器实现自动登录,用expect实现ssh自动登录服务器并进行批量管理

用expect实现ssh自动登录服务器并进行批量管理

shell代码:

复制代码 代码如下:

#!/usr/local/bin/expect

set PASSWD [lindex $argv 1]

set IP     [lindex $argv 0]

set CMD [lindex $argv 2]

spawn ssh $IP $CMD

expect "(yes/no)?" {

send "yesr"

expect "password:"

send "$PASSWDr"

} "password:" {send "$PASSWDr"} "*host " {exit 1}

expect eof

注解:

第一行,制定使用/usr/local/bin目录下的expect命令对后面的程序进行解释。

第二行,三行,四行,分别从命令行参数中获取要登录的主机IP地址,登陆密码,以及要执行的命令。

第五行,大概就是要触发这样一个事件,执行ssh $IP $CMD命令。

第6行至第11行就是expect的整个交互过程了。

如果读取到(yes/no)?提示符,就输入yes并回车,如果读取到password:提示输入密码的字符串,就输入用户登录密码(root用户)。

当然如果不是第一次登陆,以前已经登录过的话,当输入ssh $IP $CMD回车后,会直接提示输入密码也就是说会读到字符串”* password:”,这个时候会输入密码回车(send "$PASSWDr").

另外,如果主机不可达的话,(yes/no)?和”password:”的可能都不会出现,系统会提示:

“No route to host”退出程序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值