2011-01-07 67 views
3

我有一個域名列表,我想將其轉換爲各自的IP。比方說:批量轉換域到IP

domain1.com
domain2.com
domain3.com

我想獲得每個領域的IP,如:

domain1.com - > 111.111 .111.111
domain2.com - > 222.222.222.222
domain3.com - > 333.333.333.333

我使用Perl腳本我在網上找到並加入我的域名列表w ^在這裏,它說:

echo " 
<insert_list> 
" | perl -MSocket -lne' 
my $address = (split /:/)[ 0 ] or next; 
my $number = inet_aton $address; 
my $ip  = inet_ntoa $number; 
print "$address -> $ip"; 
' 

這工作,但我的一些名單上的域名已過期,不再有IP地址,在這種情況下,我得到了以下錯誤消息:

Bad arg length for Socket::inet_ntoa, length is 0, should be 4 at -e line 4, <> line 9. 

我會喜歡有一個打印列表,也告訴我,如果一個域未分配。例如:

domain1.com - > 111.111.111.111
domain2.com - > 222.222.222.222
domain3.com - > 333.333.333.333
domain4.com - >未知主機

我的列表相當長:我有大約500個域名來組織和清理。什麼是獲得每個域的IP的最佳方式?

任何幫助將不勝感激。謝謝!

回答

3

嘗試改變$ip分配行:

my $ip = $number ? inet_ntoa $number : "Unknown Host"; 

此檢查$number變量,看它是否是空的或沒有,只有當它是不是它叫inet_ntoa將地址轉換爲可打印形成。如果$number爲空,則分配字符串「未知主機」。

+0

完美的作品!非常感謝格雷格! – 2011-01-07 03:23:50