免费注册 查看新帖 |

Chinaunix

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

[系统管理] expect在执行命令返回结果中,有时候只返回一些结果,并卡住 [复制链接]

论坛徽章:
0
跳转到指定楼层
[收藏(0)] [报告]
发表于 2013-12-04 19:51 |只看该作者 |正序浏览
10可用积分
在bash中调用expect登录远程主机执行命令。发现expect在执行命令find时,有时候返回正常结果,有时候只返回一些结果,并卡住,然后就不退出。
登录的是同一个远程主机。同一时间执行脚本10次,基本上有5次是卡住的。
将  |xargs -I {} last -f {}    改为 -exec last -f \;  也是一样的情况。请指教下原因。谢谢。

expect <<EOF
   set timeout -1
   log_file ${tmpdir}/${atype}_tmp.txt
   spawn ssh ${user}@${ip}
   expect {
      "yes/no" { send "yes\r";exp_continue}
      "assword" { send "${pw}\r"}
      }
   expect "#"
   send "touch -t ${last_time}  last_time.txt \r"
   expect "#"
   send "find /var/log -type f -name \"wtmp*\" -newer \"last_time.txt\" |xargs -I {} last -f {} \r"
   expect "#"
   send " rm  -f last_time.txt \r"
   expect "#"
   send  "exit\r"
   expect eof
EOF

论坛徽章:
0
15 [报告]
发表于 2014-05-28 17:42 |只看该作者
回复 14# fufelixzh

怎么使用这个呢
   

论坛徽章:
0
14 [报告]
发表于 2014-01-09 15:55 |只看该作者
回复 1# xjxh829


   用interpreter 调试一下
然后把log贴出来。
在调用find之前,先将exect_out(bffer)清空
如果是find的少的话,可能是中间有#出现提前匹配结束了

论坛徽章:
0
13 [报告]
发表于 2013-12-10 00:31 |只看该作者
回复 12# shintoky

没有结果。测试失败。
   

论坛徽章:
0
12 [报告]
发表于 2013-12-09 09:37 |只看该作者
回复 11# xjxh829
把 find 命令作为变量使用试试?
set command "find ....."
...
send "$command"



   

论坛徽章:
0
11 [报告]
发表于 2013-12-08 22:43 |只看该作者
....大家有新建议吗?

论坛徽章:
0
10 [报告]
发表于 2013-12-05 14:47 |只看该作者
回复 9# waker
使用 -exec last -f {} \;  或者重定向到一个文件再cat出来,情况依然如此。

   

论坛徽章:
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
9 [报告]
发表于 2013-12-05 13:58 |只看该作者
expect没有等到"# "
建议你先不要xargs 看看find的结果有什么不同

论坛徽章:
0
8 [报告]
发表于 2013-12-05 12:48 |只看该作者
回复 5# waker

都尝试了,还是不行。使用 -d 还是 exp_internal 1 进行调试时,发现貌似卡在expect_out(buffer)。我设置 set match_max 500000,还是不行。运行结果如下

..................
root  pts/0  1.1.1.1  Mon Nov 21 17:10 - 17:12 ( 00:01)
root  pts/0  1.1.1.2
expect: does “2 (01:50) \r\n  root  pts/0  1.1.1.1  Mon Nov 21 17:00 - 17:02 ( 00:01) \r\n  root  pts/0  1.1.1.1  Mon Nov 21 17:01 - 17:02 ( 00:01)
................
(spawn_id exp5) match glob pattern "# "?  no
expect: set expect_out(spawn_id) "exp5"
expect: set expect_out(buffer)    " Nov 21 17:03 - 17:04 ( 00:01) \r\n root  pts/0  1.1.1.1  Mon Nov 21 17:04 - 17:05 ( 00:01) \r\n
...............
root  pts/0  1.1.1.1  Mon Nov 21 17:00 - 17:02 ( 00:01) \r\n"

---------------------------然后卡住就不动了。
   

论坛徽章:
0
7 [报告]
发表于 2013-12-05 12:38 |只看该作者
回复 6# itfly3

我是直接编辑,所以不是有乱码问题。并且有时候是能执行成功的。
   

论坛徽章:
5
金牛座
日期:2013-10-14 14:40:422015年亚洲杯之伊朗
日期:2015-03-26 10:37:012015亚冠之浦和红钻
日期:2015-10-12 17:47:4115-16赛季CBA联赛之山东
日期:2016-01-20 16:43:1215-16赛季CBA联赛之辽宁
日期:2016-03-29 16:43:59
6 [报告]
发表于 2013-12-05 10:55 |只看该作者
我用200个文件作为目标文件,,for执行脚本10次也是没问题
返回信息就是200个
不知道你那是什么情况了
你可以把那个脚本内容复制下,粘贴到一个新的文件中,,有时可能在编辑时格式有些不对
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP