Chinaunix首页 | 论坛 | 博客
  • 博客访问: 532180
  • 博文数量: 119
  • 博客积分: 3167
  • 博客等级: 中校
  • 技术积分: 1215
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-20 21:21
文章分类

全部博文(119)

文章存档

2015年(21)

2012年(4)

2011年(1)

2007年(11)

2006年(50)

2005年(32)

分类:

2006-04-23 21:50:44

graceful 方式 用tcp syn一下 ,  但是    如果远端主机端口没开或这个主机根本不存在
可能需要等待很长的时间  在shell下面可以用expect工具来实现timeout ,还好在perl里面 也有Expect这个模块.
安装Expect模块
perl -MCPAN -e 'install Expect'
 
扫描 scan.pl

#!/usr/bin/perl
use IO::Socket::INET;

exit unless $tghost = shift ;
exit unless $tgport = shift ;
if ($socket = IO::Socket::INET->new("$tghost:$tgport")) {
        print "ok\n";
        close($socket);
} else {
        close($socket);
        die ;
}

再写一个 expect的脚本 主体如下 主要为了控制timeout

#my $spawn_ok;
#my $timeout= 2 ;
#my $exp = Expect->spawn("./scan.pl $host $port")
#       or die "Cannot spawn scan.pl $!\n";
#
#$exp->expect ($timeout,
#       [
#               'ok',
#               sub
#               {
#                       $spawn_ok="ok";
#                       exp_continue;
#               }
#       ],
#       [
#               timeout=>
#               sub
#               {
#                       print "time out\n";
#               }
#       ]
#
#);
~

阅读(2224) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~