Perl中使用dig和nali判断DNS解析地址归属地是否一致脚本分享_perl

这里首先介绍下nali的这个开源小程序,项目地址:http://code.google.com/p/qqwry/

以下介绍来自项目的负责人的网站的陈述:

复制代码 代码如下:

下载

nali-0.2.tar.gz – 2011-09-11发布(下载链接一,下载链接二)
nali-0.1.tar.gz – 2009-08-16发布

说明

nali,名字取自中文“哪里”的拼音。nali包含一组命令行程序,其主要功能就是把一些网络工具的输出的IP字符串,附加上地理位置信息(使用 纯真数据库QQWry.Dat)。例如218.65.137.1会变成218.65.137.1[广西南宁市 电信]。查询是在本地进行,并不会进行联网查询,所以效率方面不会对原始命令产生什么影响。

目前包含以下几个命令:
nali
nali-dig
nali-nslookup
nali-traceroute
nali-tracepath
nali-ping

使用这些命令的前提是,他们对应的命令必须存在。例如你要用nali-dig,必须保证dig是存在的。他们的用法和原始命令是一样的。例如nali-dig,用法就和dig一样。(nali-dig等同于dig |nali)

大家可能注意到了nali这个命令,它可以对标准输出的IP串附加上地理信息。nali-*系列工具都是基于这个来实现的。

如果你觉得输入nali-xxx麻烦,那么可以做一些alias,例如
surfchen@mac:~$ alias traceroute='nali-traceroute'
surfchen@mac:~$ alias dig='nali-dig'

如果你在使用一种没有被包含在nali包里的网络工具,那么可以这样:
surfchen@mac:~$ my_network_tool|nali
Server 115.168.51.180[中国 电信CDMA]
也就是说,nali这个命令,可以对标准输出的ip,附加上地理信息。同理,如果你不喜欢用nali-dig,那么也可以用dig ip|nali这样的命令。

当然,你也可以直接用nali查询IP地址信息:
surfchen@mac:~$ nali 222.217.167.105
222.217.167.105[广西南宁市 电信]

安装

./configure
make
[sudo] make install

更新IP数据库

可用nali-update命令来更新IP数据库

开发

svn co http://qqwry.googlecode.com/svn/trunk/nali/ nali
注意,svn里并不包含QQWry.Dat,如需要从svn版本编译,那么请自行下载QQWry.Dat,然后放入项目的share目录。
Bug提交:http://code.google.com/p/qqwry/issues/list
例子

例子

下面有3个例子。
chenze@osx:~$ nali-traceroute www.travel-web.com.tw
traceroute to ns806.travel-web.com.tw (219.87.177.148[台湾省 台湾大宽频]), 64 hops max, 40 byte packets
1 192.168.0.1[局域网 对方和您在同一内部网] (192.168.0.1[局域网 对方和您在同一内部网]) 0.747 ms 0.353 ms 0.278 ms
2 115.168.51.180[中国 电信CDMA] (115.168.51.180[中国 电信CDMA]) 435.595 ms 65.757 ms 48.906 ms
3 115.168.51.161[中国 电信CDMA] (115.168.51.161[中国 电信CDMA]) 70.990 ms 66.751 ms 46.936 ms
4 115.168.51.17[中国 电信CDMA] (115.168.51.17[中国 电信CDMA]) 192.944 ms 72.679 ms 46.958 ms
5 222.217.167.105[广西南宁市 电信] (222.217.167.105[广西南宁市 电信]) 66.963 ms 54.412 ms 54.943 ms
6 218.65.137.1[广西南宁市 电信] (218.65.137.1[广西南宁市 电信]) 102.969 ms 73.220 ms 47.016 ms
7 202.97.21.165[广西 电信骨干网] (202.97.21.165[广西 电信骨干网]) 432.915 ms 161.390 ms 165.018 ms
8 * 202.97.40.225[中国电信 骨干网] (202.97.40.225[中国电信 骨干网]) 185.598 ms 161.236 ms
9 202.97.33.202[上海市 电信骨干网国际出口] (202.97.33.202[上海市 电信骨干网国际出口]) 79.857 ms 66.537 ms

工欲善其事,必先利其器,利器有了,下面说下我们的需求。有一批域名,31个DNS地址,现在要轮循这些域名在31个DNS的解析结果是不是一样的,一样则输入到另外一个文件;下面是脚本:

复制代码 代码如下:

#!/usr/bin/perl
use strict;

open DNS, “DNS_IP.txt” or die “i can't filnd the file1!\n”;;
open URL, “url_jiangsu.txt” or die “i can't filnd the file!\n”;;
open NUM, “>>numbers.txt”;
open URLS,”>>url_in_jiangsu.txt”;
while( my $url=<URL>){
chomp $url;
my $num_1=0;
my $all=0;
$num_1='/usr/bin/dig \@221.131.143.69 $url +tries=1 +time=3 +short|grep -v ‘[a-z].*'|head -1|nali|grep -q ‘江苏.*移动' && echo  1||echo  0′;#注意这里第一和最后一个单引号是其实是tab键上面那个
while (my $dns=<DNS>){
chomp $dns;
my $num='/usr/bin/dig \@$dns $url +tries=1 +time=3 +short|grep -v ‘[a-z].*'|head -1|nali|grep -q ‘移动' && echo  1||echo  0′;#注意这里第一和最后一个单引号是其实是tab键上面那个
$all+=$num;
}
if($all == 31 and $num_1==1){
print URLS  $url.”\n”;
}
print NUM $url.” “.$all.”\n”;
seek( DNS, 1, 0 );

}
close DNS;
close URL;
close URLS;
close NUM;

时间: 2024-11-01 16:37:30

Perl中使用dig和nali判断DNS解析地址归属地是否一致脚本分享_perl的相关文章

百度跳转谷歌事件是由于福建电信DNS解析地址错误造成

福建福州.厦门.泉州等各地区网友在浏览器中输入百度域名"www.baidu.com",出现的却是谷歌的首页 今日(8月23日)是传统七夕佳节,据传牛郎织女一年中只有这一天才能于鹊桥相会.今天连两大搜索引擎百度和谷歌都凑热闹前往福建进行"联姻". 20点30分左右,福建福州.厦门.泉州等各地区网友在浏览器中输入百度域名"www.baidu.com",出现的却是谷歌的首页,除了首页遭篡改以外,百度新闻.贴吧等其他页面均无异常,在经历的一个小时的异常以

perl中使用ip138网站查询ip归属地脚本分享_perl

这是去年年前写的一个perl脚本 哎 年后都没看过perl了. 复制代码 代码如下: #!/usr/bin/perl use LWP::Simple; open (FILE,"<file"); while(<FILE>){ s/^IP1.*//g; my @file =split(/\,|\s+/,$_); my @file1="$file[0] $file[1]"; my $IP ="$file[1]" ; my $domai

perl实现检测服务器中的服务是否正常脚本分享_perl

程序调用远端服务,为了确保可用性最好在使用前进行健康检测,将异常的服务排除. 复制代码 代码如下: #!/usr/bin/perl # use strict; use IO::Socket; my @servers; $servers[0]=['180.153.100.93',2222]; $servers[1]=['180.153.100.93',22]; $servers[2]=['180.153.100.93',80]; my $i=0; my $interval=3; my $count

perl 采集入库脚本分享_perl

#!/usr/bin/perl -w use DBI; use POSIX qw(strftime); my $dbh = DBI->connect("DBI:mysql:shencan:111.1.32.153:3306″,"shencan","shencan"); #my $sql = "select * from shencan.LVS"; #my $sth = $dbh->prepare($sql); #$sth-&

百度网页七夕自动跳转至谷歌 疑DNS解析错误

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;    福建福州.厦门.泉州等各地区网友在浏览器中输入百度域名"www.baidu.com",出现的却是谷歌的首页. 今日(8月23日)是传统七夕佳节,据传牛郎织女一年中只有这一天才能于鹊桥相会.今天连两大搜索引擎百度和谷歌都凑热闹前往福建进行"联姻". 20点30分左右,福建福州.厦门.泉州等各地区网友在浏览器中输入百度域名&

在Win2003中安装bind教程(部署智能DNS)_win服务器

前言: 搞LINUX的朋友都知道,bind是linux下的DNS服务软件,但很多人不清楚,它也可以运行在windows系统中,windows系统自带的dns,功能弱,是不能作智能DNS解析的,在windows 2008 R2版也没有解决这个问题,有些公司技术力量薄弱一些,一直在用windows系统,所以本文从windows出发,安装bind,利用它的view功能,做智能DNS,解决双线机房南北电信联通访问问题. 一.环境: 系统:Windows 2003 Enterprise Edition s

Perl中chomp和chop的区别介绍_perl

chomp是用来删除换行符. 复制代码 代码如下: #!/usr/bin/perl $c="abcde"; chomp($c); print "$c\n"; [root@ak]# perl a.pl abcde chop是用来删除最后一个字符. 复制代码 代码如下: #!/usr/bin/perl $c="abcde"; chop($c); print "$c\n"; [root@ak]# perl a.pl abcd cho

Perl中的文件读写学习笔记_perl

一.打开.关闭文件 语法为open (filevar, filename),其中filevar为文件句柄,或者说是程序中用来代表某文件的代号,filename为文件名,其路径可为相对路径,亦可为绝对路径. 复制代码 代码如下:  open(FILE1,"file1");  open(FILE1, "/u/jqpublic/file1"); 打开文件时必须决定访问模式,在PERL中有三种访问模式:读.写和添加.后两种模式的区别在于写模式将原文件覆盖,原有内容丢失,形式

Perl中的特殊内置变量详细介绍_应用技巧

内置变量 $_:先来看一个例子: 复制代码 代码如下: #!/usr/bin/perl -w@array = qw(a b c d);foreach (@array) { print $_," ";} 例子的作用就是定义一个数组并把其中的元素打印出来,这里需要注意的是foreach循环部分,foreach循环的标准格式应该是: 复制代码 代码如下: foreach $element (@array){ ......} 其中数组@array将其中的元素依次赋值给$element,但是在上