本脚本运行环境:
badboy@www:~$more /etc/issue
Ubuntu 10.04.2 LTS \n \l
badboy@www:~$ perl -v
This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi
脚本如下(cdn_test.pl):
- #!/usr/bin/perl
- use Encode;
- require "qqwry.pl";
- my $HOST=$ARGV[0];
- my @ip_total;
- my @ip_totals;
- my $Myip;
- @ip_total=&get_domain_ip($HOST);
- &print_information;
- #输出域名解析IP
- sub get_domain_ip(){
- open(IP,"-|","host","$_[0]");
- while(<IP>){
- if( $_=~m /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/ ){
- push(@ip_totals,$1);
- }
- }
- close IP;
- return @ip_totals;
- }
- #输出本地出口IP
- sub get_local_network(){
- open(MYIP,"elinks --dump http://checkip.dyndns.org/|");
- while(<MYIP>){
- ~m /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/;
- $Myip=$1;
- return $Myip;
- }
- }
- #获取IP地址
- sub print_addr(){
- $ip_address=decode("gbk",ipwhere($_[0]));
- return encode("utf8",$ip_address)."\n";
- }
- #输出响应代码
- sub response_code(){
- open(RESPONSE,"curl -H \"host:$HOST\" -o /dev/null -s -w \"%{http_code} %{time_connect}\" \"$_[0]\" |");
- while(<RESPONSE>){
- return $_;
- }
- close RESPONSE;
- #print $response_code."\n";
- }
- #打印基本信息
- sub print_information(){
- printf "本地出口ip:%s\n归属ISP服务商:%sWeb网站域名:%s\n解析得到的IP:%s个IP地址\n\n开始测试 ......\n\n\n",&get_local_network(),&print_addr($Myip),$HOST,$#ip_total+1;
- print "IP地址\t\t\t响应代码\t\tTCP连接时间\t\tISP服务商\n";
- for(@ip_total){
- my $ip=$_;
- print $ip."\t\t";
- @response_code_time=split(" ",&response_code($ip));
- print $response_code_time[0]."\t\t\t";
- print $response_code_time[1]."\t\t\t";
- print &print_addr($ip);
- }
- }
感谢原作者,让我学习了不少新东东。。。
哈哈。
效果如下:
badboy@www:~$ perl cdn_test.pl www.sina.com.cn 本地出口ip:x.x.x.x 归属ISP服务商:上海市 IDC机房 Web网站域名:www.sina.com.cn 解析得到的IP:2个IP地址 开始测试 ...... IP地址 响应代码 TCP连接时间 ISP服务商 61.172.201.194 200 0.012 上海市 电信 61.172.201.195 200 0.006 上海市 电信 badboy@www:~$ |
badboy@www:~$ perl cdn_test.pl www.baidu.com 本地出口ip:x.x.x.x 归属ISP服务商:上海市 IDC机房 Web网站域名:www.baidu.com 解析得到的IP:2个IP地址 开始测试 ...... IP地址 响应代码 TCP连接时间 ISP服务商 119.75.217.56 200 0.032 北京市 长城宽带 119.75.218.45 200 0.032 北京市 长城宽带 badboy@www:~$ |
本文转自hahazhu0634 51CTO博客,原文链接:http://blog.51cto.com/5ydycm/555164,如需转载请自行联系原作者