2011-01-07 3 views
3

Ich habe eine Liste der Domänen, die ich in ihre jeweilige IP konvertieren möchte. Lassen Sie uns sagen:Stapelkonvertierungsdomäne zu IP

domain1.com
domain2.com
domain3.com

Ich möchte die IP von jedem dieser Bereiche erhalten, wie zum Beispiel:

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

ich bin mit einem Perl-Skript, das ich online gefunden und das Hinzufügen von meiner Domain-Liste w Hier heißt es:

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"; 
' 

Dies funktioniert, aber einige der Domains auf meiner Liste sind abgelaufen und nicht mehr IPs haben, wobei in diesem Fall bekomme ich folgende Fehlermeldung:

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

Ich würde gerne eine gedruckte Liste, die mir auch sagt, wenn eine Domain nicht zugewiesen ist. Beispiel:

domain1.com -> 111.111.111.111
domain2.com -> 222.222.222.222
domain3.com -> 333.333.333.333
domain4.com -> Unbekannter Host

Meine Liste ist ziemlich lang: Ich habe etwa 500 Domains zu organisieren und zu bereinigen. Was wäre der beste Weg, um die IP jeder Domain zu erhalten?

Jede Hilfe würde sehr geschätzt werden. Vielen Dank!

Antwort

3

Versuchen Sie, die $ip Zuordnungslinie an sich ändernde:

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

Dieser überprüft die $number Variable, um zu sehen, ob es leer ist oder nicht, und nur dann, wenn sie es inet_ntoa nicht ruft die Adresse in eine druckbare zu umwandeln bilden. Wenn $number leer ist, wird die Zeichenfolge "Unbekannter Host" zugewiesen.

+0

Funktioniert perfekt! Vielen Dank Greg! –