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

 更新时间:2013年02月23日 13:51:56   作者:  
这篇文章主要介绍用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”退出程序。

相关文章

  • 详解Windows与Linux共享文件夹互相访问

    详解Windows与Linux共享文件夹互相访问

    这篇文章主要介绍了 详解Windows与Linux共享文件夹互相访问的相关资料,需要的朋友可以参考下
    2017-03-03
  • Shell中关于exit 0的那些坑

    Shell中关于exit 0的那些坑

    在 shell 编程中,需慎用 exit 0,本文主要介绍了Shell中关于exit 0的那些坑,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • shell 生成随机数的实现方法总结

    shell 生成随机数的实现方法总结

    这篇文章主要介绍了 shell 生成随机数的实现方法总结的相关资料,希望通过本能帮助到大家,让大家彻底掌握这几种随机数的方法,需要的朋友可以参考下
    2017-09-09
  • Linux 下载百度网盘大文件的方法

    Linux 下载百度网盘大文件的方法

    Linux 下没有百度网盘客户端,用浏览器下载速度慢得急死人,本文重点给大家介绍Linux 下载百度网盘大文件的方法,需要的朋友参考下吧
    2017-08-08
  • Linux grep -q用法示例详解

    Linux grep -q用法示例详解

    grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来,这篇文章主要介绍了Linux grep -q用法示例详解,需要的朋友可以参考下
    2023-02-02
  • Linux 中 CURL常用命令详解

    Linux 中 CURL常用命令详解

    这篇文章主要介绍了Linux 中 CURL常用命令详解,需要的朋友可以参考下
    2015-10-10
  • 如何让history命令显示日期和时间

    如何让history命令显示日期和时间

    我们都对 history 命令很熟悉。它将终端上 bash 执行过的所有命令存储到 .bash_history 文件中,来帮助我们复查用户之前执行过的命令。这篇文章主要介绍了让history命令显示日期和时间的方法,需要的朋友可以参考下
    2018-01-01
  • 使用fdisk命令管理磁盘分区详解

    使用fdisk命令管理磁盘分区详解

    这篇文章主要为大家介绍了使用fdisk命令管理磁盘分区详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Linux paste命令用法汇总

    Linux paste命令用法汇总

    paste命令是linux下的一个文件管理命令,paste命令可以把每个文件以列对列的方式,然后一列列地加以合并,也就是合并两个文件,这篇文章主要介绍了Linux paste命令使用方法,感兴趣的朋友一起看看吧
    2022-12-12
  • shell字符截取命令之cut命令的实例详解

    shell字符截取命令之cut命令的实例详解

    这篇文章主要介绍了shell字符截取命令之cut命令的实例详解的相关资料,希望通过本文大家能够掌握这部分内容,需要的朋友可以参考下
    2017-09-09

最新评论