Necesito generar una lista de direcciones IP (IPv4) en Perl. Tengo direcciones de inicio y final, por ejemplo 1.1.1.1 y 1.10.20.30. ¿Cómo puedo imprimir todas las direcciones entremedio?¿Cómo puedo generar un rango de direcciones IP en Perl?
Respuesta
Uso Net::IP 's función de bucle:
El operador
+
está sobrecargado con el fin de permitir el bucle si toda una gama de direcciones IP:
Todo está en cómo lo codifica. Esta es la forma más rápida que conozco.
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;
}
Para aquellos demasiado perezosos para googlearlo: "Hay más de una forma de hacerlo" –
¿Este método evita que sus números excedan 255? lo siento, estoy teniendo dificultades para leerlo, no estoy familiarizado con desempaquetar y, por alguna razón, todos los motores de búsqueda en mi red parecen estar inactivos (no puedo acceder a Bing, Yahoo o Google, sin un orden en particular) – onaclov2000
@ onaclov2000 http://p3rl.org/pack –
Use Net::IP. De la documentación de CPAN:
my $ip = new Net::IP ('195.45.6.7 - 195.45.6.19') || die;
# Loop
do {
print $ip->ip(), "\n";
} while (++$ip);
Este enfoque es más flexible porque Net :: IP acepta la notación CIDR, p. 193.0.1/24 y también es compatible con IPv6.
Editar: si está trabajando específicamente con netblocks, puede investigar Net::Netmask.
preferiría estas URL: http://search.cpan.org/perldoc/Net::IP y http://search.cpan.org/perldoc/Net::Netmask –
@Sinan. Sentí que mi respuesta agregaba suficiente información adicional. para valer la pena publicar La pregunta contraria: ¿por qué no debería proporcionar información útil al OP? ¿Cómo hace daño a alguien? – 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);
¿Esto es para la jajaja de los bucles? Nunca for-loop tanto. – TheyDontHaveIT
- 1. C#: Enumerar direcciones IP en un rango
- 2. ¿Cómo puedo analizar las direcciones IP y los rangos de direcciones con Perl?
- 3. ¿Cómo comparar el rango de direcciones IP en C#?
- 4. ¿Cómo puedo obtener un rango de direcciones IP dado el inicio y el final de la dirección IP?
- 5. redirigida un rango de direcciones IP que utilizan RewriteCond
- 6. Uso de direcciones IP de salida diferentes en Perl
- 7. ¿Puedo prohibir una dirección IP (o un rango de direcciones) en la aplicación ASP.NET?
- 8. Azure SQL Server Firewall Rango de direcciones IP
- 9. ¿Cómo puedo determinar las direcciones IP de la máquina local desde Perl?
- 10. ¿Cómo generar un rango alterno?
- 11. ¿Cómo redirigir todo un rango/bloque de direcciones IP con PHP?
- 12. ¿Cómo puedo generar slugs URL en Perl?
- 13. ¿Cómo se escucha en múltiples direcciones IP?
- 14. PHP Generar Rangos IP
- 15. ¿Cómo crear un registro SPF para múltiples direcciones IP?
- 16. Ordenando direcciones IP en vim
- 17. ¿Cómo extraer direcciones IP de un archivo de texto usando Perl?
- 18. Cómo convertir CIDR a la red y el rango de direcciones IP en C#?
- 19. Cómo bloquear direcciones IP o clases IP en ASP.NET
- 20. Google App Engine: lista de direcciones IP
- 21. Comprobando las direcciones IP
- 22. C# - Determinar si un rango de direcciones IP contiene una dirección particular
- 23. ¿Diferentes navegadores, direcciones IP diferentes?
- 24. Cómo censurar las direcciones IP en un archivo con Python?
- 25. rangos de direcciones IP privadas
- 26. Asociar direcciones IP con países
- 27. ¿Cómo puedo gestionar un grupo de tenedores en Perl?
- 28. Dns.GetHostEntry devuelve varias direcciones IP
- 29. ¿Cómo puedo unir direcciones IPv6 con una Perl Regex?
- 30. Spoof IP con Perl LWP
¿Por qué necesitarías tal cosa? – pavium
Necesito automatizar algunas tareas de administración del sistema. Sí, con perl – planetp
Bueno, se han hecho cosas extrañas con Perl. – pavium