免费注册 查看新帖 |

Chinaunix

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

请教如何更好地使用socket来监控网络中主机 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-25 01:49 |只看该作者 |倒序浏览
在局域网中有几台机器,现均开tcp端口用于管理,要实现的功能就是“登录相应主机端口,运行一个检查程序,然后根据返回结果来决定是否运行第二个程序”,下面这个脚本虽可以完成这个任务,但是要多次连接主机,也曾尝试使用fork方式来实现,但无法成功。请高手指教,谢谢~~
  1. #!/usr/bin/perl  -w

  2. use IO::Socket;

  3. my ($ip,$port,$sock,@ans);

  4. sub connect_to_ip(){
  5.         if(@_<2){
  6.                 print "缺少参数: ip port\n";
  7.                 return;
  8.         }
  9.         $sock = new IO::Socket::INET (
  10.                         PeerAddr  => $_[0],  #ip
  11.                         PeerPort  => $_[1],  #port
  12.                         Proto     => 'tcp',
  13.                         Timeout   => 30,);
  14.         unless($sock){
  15.                 die "Error:$!\n";
  16.                 return;
  17.         }
  18. }

  19. open FILE,"< test.cf" or die "Cannot open file test.cf :$!";

  20. while(<FILE>){
  21.         next if /^\s*#|^\s*$/;
  22.         ($ip,$port)=($1,$2) if /((?:\d{1,3}.){3}\d{1,3})\s+(\d+)/;

  23.         &connect_to_ip($ip,$port);
  24.         print $sock "check_data\n";
  25.         print $sock "exit\n";

  26.         @ans = <$sock>;

  27.         close($sock);

  28.         foreach $line (@ans){
  29.                                                                 chomp;
  30.                 if($line =~ /$_.*异常/){
  31.                    print $line;

  32.                                                                          &connect_to_ip($ip,$port);
  33.                                                                          print $sock "restart_proc\n";
  34.                                                                          print $sock "exit\n";
  35.                                                                          print $out while (defined($out=<$sock>));

  36.                         }
  37.         }
  38. }

  39. close FILE;
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2010-12-25 12:38 |只看该作者
一定要学会封装。

论坛徽章:
0
3 [报告]
发表于 2010-12-26 12:46 |只看该作者
恳请版主详细指教,多给点意见,谢谢!!

论坛徽章:
0
4 [报告]
发表于 2010-12-26 14:07 |只看该作者
嫌连接次数多,可以连一次不释放,等所有工作都干完再释放啊。

论坛徽章:
0
5 [报告]
发表于 2010-12-26 20:41 |只看该作者
可以看看仙子提供的监控程序,应该在精华里有的,我看了受益匪浅的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP