欢迎来到代码驿站!

Shell

当前位置:首页 > 脚本语言 > Shell

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

时间:2021-07-19 07:59:15|栏目:Shell|点击:

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”退出程序。

上一篇:Linux 使用grep筛选多个条件及grep常用过滤命令

栏    目:Shell

下一篇:Shell脚本去重的几种方法实例

本文标题:用expect实现ssh自动登录服务器并进行批量管理的实现方法

本文地址:http://www.codeinn.net/misctech/159015.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有