這裡首先介紹下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;