Ich muss eine Liste von IP-Adressen (IPv4) in Perl generieren. Ich habe Start- und Endadressen, zum Beispiel 1.1.1.1 und 1.10.20.30. Wie kann ich alle Adressen dazwischen drucken?Wie kann ich eine Reihe von IP-Adressen in Perl generieren?
Antwort
Verwenden Net::IP ‚s Looping Funktion:
Der
+
Operator ist, um überladene Looping zu ermöglichen, obwohl eine ganze Reihe von IP-Adressen:
Es ist alles in, wie Sie es codieren. Das ist der schnellste Weg, den ich kenne.
my $start = 0x010101; # 1.1.1
my $end = 0x0a141e; # 10.20.30
for my $ip ($start..$end) {
my @ip = ($ip >> 16 & 0xff
, $ip >> 8 & 0xff
, $ip & 0xff
);
print join('.', 1, @ip), "\n";
}
TMTOWTDI:
sub inc_ip { $_[0] = pack "N", 1 + unpack "N", $_[0] }
my $start = 1.1.1.1;
my $end = 1.10.20.30;
for ($ip = $start; $ip le $end; inc_ip($ip)) {
printf "%vd\n", $ip;
}
Für diejenigen, die zu faul sind, um es zu googeln - "Es gibt mehr als eine Möglichkeit, es zu tun" –
Verhindert diese Methode, dass Ihre Zahlen 255 überschreiten? Entschuldigung ich habe eine harte Zeit es zu lesen, ich bin nicht vertraut mit dem Auspacken und gut aus irgendeinem Grund scheinen alle Suchmaschinen auf meinem Netwok zu sein (kann nicht zu Bing, Yahoo oder Google, in keiner bestimmten Reihenfolge – onaclov2000
) @ onaclov2000 http://p3rl.org/pack –
Verwenden Sie Net::IP. Aus der CPAN-Dokumentation:
my $ip = new Net::IP ('195.45.6.7 - 195.45.6.19') || die;
# Loop
do {
print $ip->ip(), "\n";
} while (++$ip);
Dieser Ansatz ist flexibler, da Net :: IP CIDR-Notation akzeptiert, z. 193.0.1/24 und unterstützt auch IPv6.
Edit: Wenn Sie speziell mit netblocks arbeiten, könnten Sie Net::Netmask untersuchen.
I würde diese URLs bevorzugen: http://search.cpan.org/perldoc/Net::IP und http://search.cpan.org/perldoc/Net::Netmask –
@Sinan Ich fühlte, dass meine Antwort genug zusätzliche Informationen hinzugefügt lohnt sich zu posten. Die Gegenfrage: Warum - sollte ich nicht - Ich gebe dem OP hilfreiche Informationen? Wie schadet es jemandem? – rjh
# We can use below code to generate IP range
use warnings;
use strict;
my $startIp = $ARGV[0];
my $endIp = $ARGV[1];
sub range {
my (@ip,@newIp,$i,$newIp,$j,$k,$l,$fh);
my ($j1,$k1,$l1);
open($fh,">","ip.txt") or die "could not open the file $!";
@ip = split(/\./,$startIp);
for($i=$ip[0];$i<=255;$i++) {
for($j=$ip[1];$j<=255;$j++) {
$ip[1]=0 if($j == 255);
for($k=$ip[2];$k<=255;$k++) {
$ip[2]=0 if($k == 255);
for($l=$ip[3];$l<=255;$l++) {
$ip[3]=0 if($l == 255);
@newIp = $newIp = join('.',$i,$j,$k,$l);
print $fh "$newIp \n";
exit if ($newIp eq $endIp);
}
}
}
}
}
range ($startIp, $endIp);
Ist das für die lol of loops? Nie so viel for-Schleife. – TheyDontHaveIT
- 1. Wie kann ich alle Permutationen eines Arrays in Perl generieren?
- 2. Wie kann ich alle Teilmengen einer Liste in Perl generieren?
- 3. In Perl, wie kann ich blockieren für eine Reihe von Systemaufrufen zu beenden?
- 4. Generieren einer Reihe von Daten
- 5. Wie kann ich eine C++ - Klasse von Perl verwenden?
- 6. Wie kann ich eine bestimmte Version einer Reihe von Perl-Modulen installieren?
- 7. Wie kann ich eine Liste von Funktionsabhängigkeiten in MATLAB generieren?
- 8. Wie kann ich eine Zeichenfolge in Perl vorbelegen?
- 9. Wie kann ich eine Reihe von Ansichten erstellen?
- 10. REDSHIFT: Wie kann ich eine Reihe von Zahlen generieren, ohne eine Tabelle namens "Nummern" in Rotverschiebung (Postgres 8.0.2) zu erstellen?
- 11. Kann ich eine Anwendungsbereichsvariable in Perl haben?
- 12. generieren eine Reihe von zufälligen eindeutigen Zahlen aus einem Intervall
- 13. Wie kann ich eine Liste von fortlaufenden Nummern generieren?
- 14. Wie kann ich von Perl erzeugten Perl-Code verschönern?
- 15. Wie kann ich einfach eine Perl-Funktion abhängig vom Namen der importierenden Klasse generieren?
- 16. Wie kann ich XML von Perl erstellen?
- 17. Wie kann ich eine kryptografisch sichere Pseudozufallszahl in C# generieren?
- 18. Wie kann ich eine vollständige Trace.axd in ASP.NET MVC generieren?
- 19. Wie kann ich Perl-Variablen in einem anderen Stapelrahmen lokalisieren?
- 20. Wie kann ich Text in eine Zeichenfolge in Perl einfügen?
- 21. Wie kann ich eine Anrufliste in Perl abrufen?
- 22. Wie kann ich eine rohe SNMP-Trap in Perl analysieren?
- 23. Wie kann ich eine CSV-Datei in Perl effizient parsen?
- 24. Wie kann ich eine lange Zeichenfolge in Perl angeben?
- 25. Wie kann ich eine strftime formatierte Zeichenfolge in Perl analysieren?
- 26. Wie kann ich eine Variable als Modulname in Perl verwenden?
- 27. Wie kann ich eine Sybase-Datetime-Zeichenfolge in Perl bearbeiten?
- 28. Wie kann ich Zeitzonen in Perl konvertieren?
- 29. Wie kann ich eine eindeutige ID in Python generieren?
- 30. Wie mappe ich eine Reihe von Arrays in mehrere Zeilen?
Warum brauchen Sie so etwas? – pavium
Ich muss einige Systemadministrationsaufgaben automatisieren. Ja, mit Perl – planetp
Nun, Fremde Dinge sind mit Perl gemacht worden. – pavium