Devo generare un elenco di indirizzi IP (IPv4) in Perl. Ho gli indirizzi iniziali e finali, ad esempio 1.1.1.1 e 1.10.20.30. Come posso stampare tutti gli indirizzi tra loro?Come posso generare un intervallo di indirizzi IP in Perl?
risposta
Usa Net::IP s' caratteristica looping:
L'operatore
+
è sovraccarico al fine di consentire il ciclo anche se tutta una serie di indirizzi IP:
È tutto nella modalità di codifica. Questo è il modo più veloce che conosco.
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;
}
Per quelli troppo pigri per google - "C'è più di un modo per farlo" –
Questo metodo impedisce ai tuoi numeri di superare i 255? scusa sto facendo fatica a leggerlo, non ho familiarità con lo spacchettamento e beh per qualche motivo tutti i motori di ricerca sul mio netwok sembrano essere bassi (non riesco a raggiungere bing, yahoo o google, in nessun ordine particolare) – onaclov2000
@ onaclov2000 http://p3rl.org/pack –
Utilizzare Net::IP. Dalla documentazione CPAN:
my $ip = new Net::IP ('195.45.6.7 - 195.45.6.19') || die;
# Loop
do {
print $ip->ip(), "\n";
} while (++$ip);
Questo approccio è più flessibile perché Net :: IP accetta la notazione CIDR, ad es. 193.0.1/24 e supporta anche IPv6.
Modifica: se si sta utilizzando specificamente netblocks, è possibile esaminare Net::Netmask.
I preferirei questi URL: http://search.cpan.org/perldoc/Net::IP e http://search.cpan.org/perldoc/Net::Netmask –
@Sinan Ho sentito che la mia risposta ha aggiunto abbastanza informazioni aggiuntive vale la pena postare. La domanda contraria: perché non dovrei fornire informazioni utili all'OP? Come fa a nuocere a qualcuno? – 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);
Questo è per il lol di loop? Mai fare un ciclo così tanto. – TheyDontHaveIT
- 1. C#: Enumera gli indirizzi IP in un intervallo
- 2. Come si genera un intervallo di indirizzi IP con indirizzo IP iniziale e finale?
- 3. Come posso analizzare gli indirizzi IP e gli intervalli di indirizzi con Perl?
- 4. Posso vietare un indirizzo IP (o un intervallo di indirizzi) nell'applicativo ASP.NET?
- 5. Intervallo di indirizzi IP del firewall SQL Server di Azure
- 6. Filtro indirizzi IP
- 7. Intervallo ip subnet ip riscrivi
- 8. Come confrontare l'intervallo di indirizzi IP in C#?
- 9. Come posso generare slug URL in Perl?
- 10. Intervallo IP alla conversione CIDR in Python?
- 11. Come generare un intervallo alternato?
- 12. Come convertire CIDR in rete e intervallo di indirizzi IP in C#?
- 13. Google App Engine: elenco di indirizzi IP?
- 14. Controllo degli indirizzi IP
- 15. Come estrarre gli indirizzi IP da un file di testo usando Perl?
- 16. Ping di un intervallo IP con Scapy
- 17. Tecniche di rilevamento posizione per indirizzi IP
- 18. Google Cloud Platform Lavoratori DataFlow Indirizzi IP
- 19. Come censurare gli indirizzi IP in un file con Python?
- 20. Come ascoltare su più indirizzi IP?
- 21. Se il mio server ha più indirizzi IP, come posso eseguire uno script usando ciascuno degli indirizzi IP?
- 22. Django ALLOWED_HOSTS Intervallo IP
- 23. Come verificare un IP di input in un intervallo IP specifico
- 24. IP spoofato con Perl LWP
- 25. Dns.GetHostEntry restituisce più indirizzi IP
- 26. Intervallo IP su CIDR in Ruby/Rails?
- 27. Ordinamento degli indirizzi IP in vim
- 28. Conversione di indirizzi IP a intero
- 29. Come posso generare un numero casuale all'interno di un intervallo in Rust?
- 30. Intervallo di indirizzi di una libreria caricata dinamicamente in Windows
Perché avresti bisogno di una cosa del genere? – pavium
Ho bisogno di automatizzare alcune attività di amministrazione del sistema. Sì, con perl – planetp
Bene, cose strane sono state fatte con Perl. – pavium