2011-01-07 4 views
3

それぞれのIPに変換したいドメインのリストがあります。私はこれらのドメインのそれぞれのIPを取得したいと思いバッチ変換ドメインからIP

domain1.com
domain2.com
domain3.com

、のような:さんが言ってみましょう

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を取得する最良の方法は何でしょうか?

ご協力いただければ幸いです。ありがとう!これは、空だかどうかを確認する$number変数をチェックし、そうでない場合にのみ、それが印刷可能にアドレスを変換するinet_ntoaを呼び出しん

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

答えて

3

はに$ip割り当てラインを変更してみてください形。 $numberが空の場合、 "Unknown Host"という文字列が割り当てられます。

+0

完璧に動作します!多くのありがとうグレッグ! –

関連する問題