Potrzebuję wygenerować listę adresów IP (IPv4) w Perlu. Mam adresy początkowy i końcowy, na przykład 1.1.1.1 i 1.10.20.30. Jak mogę wydrukować wszystkie adresy między nimi?Jak mogę wygenerować zakres adresów IP w Perlu?
Odpowiedz
Zastosowanie Net::IP „s zapętlenie cecha:
Operator
+
jest przeciążone w celu umożliwienia zapętlenie choć cały zakres adresów IP:
Wszystko to w jaki sposób to kodujesz. To najszybszy sposób, jaki znam.
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;
}
Dla tych zbyt leniwych, aby google to - "Tam jest więcej niż jeden sposób to zrobić" –
Czy ta metoda zapobiega przekroczeniu 255 liczb? przepraszam, że trudno mi go czytać, nie jestem zaznajomiony z rozpakowywaniem iz jakiegoś powodu wszystkie wyszukiwarki w moim netwoku wydają się być wyłączone (nie mogą dostać się do bing, yahoo lub google, w żadnej konkretnej kolejności) – onaclov2000
@ onaclov2000 http://p3rl.org/pack –
Użyj Net::IP. Z dokumentacji CPAN:
my $ip = new Net::IP ('195.45.6.7 - 195.45.6.19') || die;
# Loop
do {
print $ip->ip(), "\n";
} while (++$ip);
Takie podejście jest bardziej elastyczne, ponieważ Net :: IP akceptuje notację CIDR, np. 193.0.1/24, a także obsługuje IPv6.
Edycja: jeśli pracujesz z blokami prostymi, możesz sprawdzić Net::Netmask.
I wolałby te adresy URL: http://search.cpan.org/perldoc/Net::IP i http://search.cpan.org/perldoc/Net::NetMask –
@Sanan Czułem, że moja odpowiedź zawiera wystarczająco dużo dodatkowych informacji być wartym opublikowania. Kwestionariusz: dlaczego - nie powinienem - udzielam PO przydatnych informacji? Jak to krzywdzi kogokolwiek? – 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);
Czy to jest dla pętli? Nigdy nie przepuszczaj za dużo. – TheyDontHaveIT
- 1. Jak porównać zakres adresów IP w języku C#?
- 2. C#: Wyliczanie adresów IP w zakresie
- 3. Jak zablokować zakres adresów IP za pomocą pliku .htaccess
- 4. Jak przekierować cały zakres/blok adresów IP za pomocą PHP?
- 5. Jak wygenerować naprzemienny zakres?
- 6. Zakres adresów IP google GCM push serwer powiadomień?
- 7. Sortowanie adresów IP w vim
- 8. Analizator adresów IP w JavaScript
- 9. prywatne zakresy adresów IP
- 10. Apache przerwać zakres IP podsieci
- 11. szyn: dowiedzieć się, czy IP jest w zakresie adresów IP
- 12. Jak wygenerować wykładniczo rosnący zakres w Pythonie
- 13. Jak obliczyć wielkość pamięci podając zakres adresów?
- 14. Jak mogę obliczyć transmisję IP z adresu IP i maski sieci w Perlu?
- 15. Zakres IP do CIDR w Ruby/Rails?
- 16. Dns.GetHostEntry zwraca wiele adresów IP
- 17. Techniki wykrywania lokalizacji dla adresów IP
- 18. Ograniczanie/blokowanie adresów IP w IPv6
- 19. Obliczanie zakresu adresów IP z maski podsieci
- 20. Jeśli mój serwer ma wiele adresów IP, w jaki sposób mogę uruchomić skrypt przy użyciu każdego z adresów IP?
- 21. Biorąc pod uwagę zakres podsieci i listę adresów IP, zaznacz wszystkie wiersze, w których adresy IP mieszczą się między
- 22. Jak uzyskać listę wszystkich ważnych adresów IP w sieci lokalnej?
- 23. Jak wygenerować pakiety Tcp, ip i Udp w języku Python?
- 24. indeksowane wahała algorytm wyszukiwania dla adresów IP
- 25. Ustawianie białej listy adresów IP Apache
- 26. Ograniczanie adresów IP dla Jetty i Solr
- 27. Konwersja adresów NSNetservice [], aby adres IP ciąg
- 28. Jak skonfigurować postgresql postgresql.conf listen_addresses dla wielu adresów IP
- 29. Jak sprawić, aby Fiddler słuchał wszystkich adresów IP?
- 30. Jak mogę ograniczyć dostęp do niektórych adresów URL przez źródłowy adres IP w Tomcat?
Dlaczego potrzebujesz czegoś takiego? – pavium
Potrzebuję zautomatyzować niektóre zadania administracyjne systemu. Tak, z perl – planetp
Cóż, dziwniejsze rzeczy zostały zrobione z Perlem. – pavium