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"; # } # ] # #); ~
|
阅读(2263) | 评论(1) | 转发(0) |