免费注册 查看新帖 |

Chinaunix

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

[网络相关] 关于shell并发连接的一个疑问,请拍砖 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-28 17:59 |只看该作者 |倒序浏览
我要实现功能:从“iplist”这个IP地址列表文件中读取地址,并调用expect来实现expect里面登陆,采集等功能,同时记录下日志。并发连接数“SEND_THREAD_NUM”来决定并发连接数的控制。

这个脚本我测试过,可以正确一次读取4个IP并执行。

第一个for循环里的echo的作用,根据网上搜到的知识是,向6里面写入4个空格,然后read从6中按行读取,读取1行后sleep 1S,执行expect,同时向6里面再写入一个IP地址。
疑问1:那4个空格,为何不输出,我改成别的数测试的时候没见到输出也。。而最开始FIFO文件里应该是装了4个空格?

疑问2:第2个for循环里面是如何向6里面写入的,因为按照我的理解,read一行后,6里面是会少一个的,而后echo了一个IP地址写进入又,这样里面就又4个了。没有控制在里面啊。
还是说read会把fifo里面的数据一次读光,第一个调用一个expect,等读取完后,再将里面echo的4个IP写入fifo,然后开始第二次循环?

疑问3: 因为expect会返回一些数据,记录日志的时候能否一个expect的数据在一起,因为测试的时候我看显示是4个expect的数据一起显示的。。看起来很乱。

刚接触管道,只了解一些皮毛,望各位多多指教。。
  1. #!/bin/bash

  2. j=0

  3. MGip=(`cat iplist`)
  4. LENTH=${#MGip[*]}

  5. SEND_THREAD_NUM=4
  6. tmp_fifofile="/tmp/$.fifo"
  7. mkfifo "$tmp_fifofile"
  8. exec 6<>"$tmp_fifofile"
  9. rm $tmp_fifofile

  10. for ((i=0; i<$SEND_THREAD_NUM; i++))
  11.     do
  12.         echo
  13.         let j++
  14.     done >&6

  15. for ((i=0; i<$LENTH; i++, j++))
  16.     do
  17.         read -u 6
  18.         {
  19.             sleep 1
  20.             ./expect ${MGip[$i]}
  21.             echo ${MGip[$j]} >&6
  22.         } &
  23.     done

  24. wait
  25. exec 6>&-
  26.                                                                                                                                       
  27. exit 0
复制代码

论坛徽章:
0
2 [报告]
发表于 2012-09-28 18:11 |只看该作者
不会全都回家过国庆了吧。。。

论坛徽章:
1
2015亚冠之西悉尼流浪者
日期:2015-05-28 16:30:37
3 [报告]
发表于 2012-09-29 10:12 |只看该作者
fifo文件是 命名管道文件 ,用于进程间的通信.
fifo文件有些特性,当文件内为空,且设置了阻塞位时,会阻塞当前进程。

具体这些怎么实现的,建议你找本linux c 的数来看看!我也就知道这么多了,希望能帮上你点点!

论坛徽章:
1
2015亚冠之西悉尼流浪者
日期:2015-05-28 16:30:37
4 [报告]
发表于 2012-09-29 10:17 |只看该作者
mywolfking 发表于 2012-09-28 17:59
我要实现功能:从“iplist”这个IP地址列表文件中读取地址,并调用expect来实现expect里面登陆,采集等功能 ...


关于第三点,应该可以在expect日志输出中每行 加入 "ip" 标识吧,输出后,用个脚本来分割日志。  

论坛徽章:
0
5 [报告]
发表于 2012-09-29 10:46 |只看该作者
回复 3# tank064


    多谢了, C语言丢下好几年了。。多年没搞过编程了。。。现在因为工作关系开始接触shell脚本,还停留在脚本能用的地步,至于脚本什么bug啊,什么进程控制之类的好美研究到那么深入呢。。

论坛徽章:
0
6 [报告]
发表于 2012-10-11 10:50 |只看该作者
看来人气不行啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP