免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5302 | 回复: 10
打印 上一主题 下一主题

[系统管理] expect ssh多台机器退出后hang住问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-31 14:56 |只看该作者 |倒序浏览
本帖最后由 93846273 于 2013-01-31 14:59 编辑

请教下CU的shell expect大牛。
现在有3个文件,a.expect的代码如下,其中1.sh的执行时间大约在15分钟左右
  1. #!/usr/bin/expect -f
  2. #autologin remotehost expect script

  3. set timeout 1800
  4. set host [lindex $argv 0]
  5. set passwd 123456
  6. spawn ssh $host
  7. expect {
  8.         "(yes/no)"  {send "yes\r";exp_continue}
  9.         "password:" {send "$passwd\r"}
  10. }
  11. expect -re "($|#)"
  12. send "wget -P /tmp abc.com:/tmp/1.sh\r"
  13. send "sh /tmp/1.sh\r"
  14. send "exit 1\r"
  15. expect eof
复制代码
a.sh的代码如下
  1. #!/bin/bash
  2. #login&exec script
  3. for k in `cat hosts.txt`
  4.     do
  5.         (
  6.         expect a.expect $k
  7.         )&
  8.     done
  9. wait
复制代码
第三个文件hosts.txt是主机名列表,里面有100台机器,第一行是1.1.1.1,第二行是2.2.2.2,依次最后一行是100.100.100.100


问题是,每次同时登陆多台机器执行脚本a.sh的时候,在目标机器上能够顺利执行完脚本,不过到最后exit即退出目标主机的时候,有时能够退出来,但有时就卡住了,必须手工敲入ctrl+c才能退出,很是奇怪,脚本写的有问题吗?麻烦大牛协助分析,谢谢。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
2 [报告]
发表于 2013-02-01 07:03 |只看该作者
回复 1# 93846273


    是不是还没执行完呢?

论坛徽章:
0
3 [报告]
发表于 2013-02-01 13:20 |只看该作者
回复 2# blackold
是的   试了几下,总会有那么1,2台没有执行,但是还是在登陆状态,expect设置的timeout超时时间后就自动退出了

   

论坛徽章:
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 [报告]
发表于 2013-02-01 13:48 |只看该作者
适当的sleep 一下再send
另外 "password:" 和"password: "是有区别的
系统提示符也不一定是$或#

论坛徽章:
0
5 [报告]
发表于 2013-02-01 18:08 |只看该作者
本帖最后由 93846273 于 2013-02-01 18:10 编辑

回复 4# waker
谢谢waker大神
send "wget -P /tmp abc.com:/tmp/1.sh\r"
这个脚本里也有wget的操作,后来我也适当的加了一些sleep,结果发现如果同时执行30多台的话,总有那么4-5台没有执行成功。
另外弱弱的问下waker大神,"password:"和"password: ",貌似多了个空格,除了这个还有其他区别吗。。。
   

论坛徽章:
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 [报告]
发表于 2013-02-02 09:14 |只看该作者
回复 5# 93846273


   区别就是多了一个空格,机器的速度比手指快的多,exploring expect一书中对这个问题有专门的描述,有时间看看

论坛徽章:
0
7 [报告]
发表于 2013-02-05 10:31 |只看该作者
回复 6# waker
好的,多谢waker

   

论坛徽章:
1
2015亚冠之西悉尼流浪者
日期:2015-05-28 16:30:37
8 [报告]
发表于 2013-02-05 17:37 |只看该作者
楼主不加并发数控制么?

论坛徽章:
0
9 [报告]
发表于 2013-02-16 11:52 |只看该作者
回复 8# tank064
比如如何控制呢?

   

论坛徽章:
0
10 [报告]
发表于 2013-02-16 15:38 |只看该作者
a little comments , hope useful for you
try use spawn_id
and add sleep between send or add expect to check return value
"send "wget -P /tmp abc.com:/tmp/1.sh\r"
send "sh /tmp/1.sh\r"
send "exit 1\r
"
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP