免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 10617 | 回复: 21
打印 上一主题 下一主题

通过expect自动登录到30台linux机器运行相同命令 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-07 00:09 |只看该作者 |倒序浏览
脚本名字:123.sh
作用:运行expect 123.sh后,能够自动登录到ip为125.1.1.1-30这30台机器运行一些相同的命令,省去了每台机器登录重复敲命令,浪费时间

#!/user/bin/expect -f

for {set i 1} {$i<=30} {incr i} {
spawn ssh -l root 125.1.1.$i
expect "*password: "
sleep 5
send "QwErT\r"
send "find / -name hao.txt\r"
interact

}

但是我运行后发现只能登陆第一台机器,也就是125.1.1.1运行命令find / -name hao.txt,
后面的ip机器全部没有运行我要运行的命令,请问如何解决???

论坛徽章:
0
2 [报告]
发表于 2008-08-07 01:00 |只看该作者
换个IP,手动执行一下,看看可不可以? 你的密钥没问题吧 ?

论坛徽章:
0
3 [报告]
发表于 2008-08-07 01:44 |只看该作者

回复 #2 xwmhmily 的帖子

跟ip无关,这种方式没有用到密匙啊,我运行脚本后他就自动登录到第一台机器去了,然后脚本就自动停止运行了.

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
4 [报告]
发表于 2008-08-07 08:03 |只看该作者
interact变为expect eof

论坛徽章:
0
5 [报告]
发表于 2008-08-07 09:11 |只看该作者
原帖由 waker 于 2008-8-7 08:03 发表
interact变为expect eof



用了你的方法是可以每台登录成功了,但是登录后没有运行我要运行的命令,为了验证,我把find / -name hao.txt改成touch hao.txt,但是发现登录每台机器检查并没有生成这个hao.txt文件

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
6 [报告]
发表于 2008-08-07 09:25 |只看该作者

回复 #5 tommy2004 的帖子

文件在root的$HOME目录里

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2008-08-07 09:30 |只看该作者
原帖由 tommy2004 于 2008-8-7 09:11 发表



用了你的方法是可以每台登录成功了,但是登录后没有运行我要运行的命令,为了验证,我把find / -name hao.txt改成touch hao.txt,但是发现登录每台机器检查并没有生成这个hao.txt文件

我想send命令前先expect一下shell提示符比较保险。

论坛徽章:
0
8 [报告]
发表于 2008-08-07 09:31 |只看该作者
原帖由 waker 于 2008-8-7 09:25 发表
文件在root的$HOME目录里


root的$HOME目录里也就是/root了,我找过没有


而且我用find / -name hao.txt这样整个linux系统来查找也找不到touch hao.txt建立的文件

论坛徽章:
0
9 [报告]
发表于 2008-08-07 09:35 |只看该作者
原帖由 woodie 于 2008-8-7 09:30 发表

我想send命令前先expect一下shell提示符比较保险。



终于搞好了,我加了sleep 10,让他停止一下就可以了
send "pYS439wF\r"
sleep 10
send "touch /root/hao.txt\r"

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
10 [报告]
发表于 2008-08-07 09:46 |只看该作者
原帖由 tommy2004 于 2008-8-7 09:35 发表



终于搞好了,我加了sleep 10,让他停止一下就可以了
send "pYS439wF\r"
sleep 10
send "touch /root/hao.txt\r"

sleep是可以,但检测shell提示符更通用。
另建议直接丢掉interact一句即可,expect eof会等待到超时才会执行到下一句,费时间。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP