当前位置:  操作系统/服务器>linux

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

    来源: 互联网  发布时间:2014-10-14

    本文导语:  shell代码: 代码如下:#!/usr/local/bin/expectset PASSWD [lindex $argv 1]set IP     [lindex $argv 0]set CMD [lindex $argv 2]spawn ssh $IP $CMDexpect "(yes/no)?" {send "yesr"expect "password:"send "$PASSWDr"} "password:" {send "$PASSWDr"} "*host " {exit 1}expect eof 注解:第一行,制...

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


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何不使用expect而作出expect最简单的功能?
  • 关于expect的问题
  • 求问expect脚本的问题
  • expect语言大批量非交互修改密码问题
  • (help)expect工具的问题
  • Expect脚本的编写
  • Expect 工具 Expectit
  • expect script,環境變數lang設定?
  • [ lfs 提问 ] lfs6.2中6.11里-Binutils-2.16.1遇到无“expect”命令的问题
  • expect中为send语句上加变量的代码
  • 如何判断expect中调用的命令是否成功?
  • 100分请教高手 linux 下安装expect
  • expect: bad interpreter: Permission denied
  • 《急需解决的问题》关于run ‘expect script in a php file' 的问题!!!
  • 急!!!请教expect脚本的问题
  • expect 关于send关键的问题
  • 请问如何在expect脚本中实现变量比较?
  • expect 的问题
  • 自动化控制和测试的软件工具 Expect
  • 如何用 expect 输入密码


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3