南强小屋 Design By 杰米
脚本功能:通过ICMP Ping或TCP/SYN探测指定的域名,探测前检测域名是否有效。
file: check.host.pl #!/usr/bin/perl use strict; use Net::Ping; use Net::DNS; use Time::HiRes qw(); $| = 1; my $DEFAULT_TIMEOUT = 2; my $PING_TIMEOUT = 2; my $DNS_TIMEOUT = 3; ### 查询域名是否有效 sub queryDomain { my $domain = shift(); my $query = ''; my $dns = Net::DNS::Resolver->new( tcp_timeout => $DNS_TIMEOUT, udp_timeout => $DNS_TIMEOUT, retry => 1 ); my @nameservers = qw/8.8.8.8 114.114.114.114/; $dns->nameservers(@nameservers); eval { $query = $dns->search($domain,'A'); }; if ($@ or ! $query) { my $err = $dns->errorstring ; print "ERR: query $domain failed: $errn"; return if ($err =~ /NXDOMAIN/); } return 'OK'; } ### return nothing is FAILED, other is OK sub pingHost { my $arg = shift(); return 1 if (ref $arg ne 'HASH'); my $p; eval { $p = Net::Ping->new($arg->{'proto'},$DEFAULT_TIMEOUT,0) }; if ($@) { warn "ERR to create Net::Ping object: $@n"; return; } $p->hires(); my ($host,$duration,$hip,$rep,$ret); ### tcp/syn ping if ($arg->{'proto'} eq "syn") { $p->{port_num} = $arg->{'port'}; $p->ping($arg->{'host'},$PING_TIMEOUT); if (($host,$duration,$hip) = $p->ack()) { printf("ACK Reply from $arg->{'host'}[%s] time=%.2f msn", $hip, $duration * 1000); $ret = 'OK'; } else { warn "SYN Request for $arg->{'host'} timed out.n"; } } ### icmp ping else { ($rep,$duration,$hip) = $p->ping($arg->{'host'},$PING_TIMEOUT); if ($rep) { printf("Echo Reply from $arg->{'host'}[%s] time=%.2f msn", $hip, $duration * 1000); $ret = 'OK'; } else { warn "PING Request for $arg->{'host'} timed out.n"; } } $p->close; undef($p); return $ret; } my $ARG = { proto => 'syn', port => 80 }; my $host = $ARGV[0]; my $proto = $ARGV[1]; die "Usage: $0 [icmp]n" if (! $host); $ARG->{'host'} = $host; $ARG->{'proto'} = $proto if ($proto); my $code; if (&queryDomain($host) eq 'OK' and $code = &pingHost($ARG)) { print "$host is online !n"; } else { print "$host is DOWN !n"; }
测试例子:
# ./check.host.pl 2013.jb51.net ERR: query 2013.jb51.net failed: NXDOMAIN 2013.jb51.net is DOWN ! # ./check.host.pl www.jb51.net ACK Reply from www.jb51.net[173.255.214.254] time=307.04 ms www.jb51.net is online ! # ./check.host.pl jb51.net icmp Echo Reply from jb51.net[173.255.214.254] time=205.61 ms jb51.net is online ! # ./check.host.pl chinagfw.com icmp PING Request for chinagfw.com timed out. chinagfw.com is DOWN !
标签:
Perl脚本,检测域名
南强小屋 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
南强小屋 Design By 杰米
暂无Perl脚本检测一个域名是否有效的评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。