¿Cómo puedo imprimir un rango de direcciones IP en la línea de comando de Linux usando el comando "seq"? Por ejemplo: necesito seq para imprimir un rango de ip de 10.0.0.1 a 10.0.0.23. Parece que el período entre los octetos hace que el número se comporte como un punto flotante. Recibo un "error de argumento de coma flotante no válido". Intenté usar la opción -f. Puede ser que no lo estoy usando correctamente. Pero aún así me dio un error. Estoy intentando algo similar a
seq 10.0.0.2 10.0.0.23
¿Hay otra forma de imprimir direcciones IP en un rango en Linux que no sea cambiar a Excel?
linux
bash
command-line
usuario2476714
fuente
fuente
bash
ese rango de direcciones se puede imprimir conecho 10.0.0.{2..23}
. La{..}
construcción se llama expansión de llaves.Respuestas:
Use un formato:
Desafortunadamente, esto no es obvio ya que a GNU no le gusta escribir páginas de manual.
fuente
info coreutils 'seq invocation'
.%g
tampoco está documentado allí; tienes que buscar laprintf
página de información correcta .man 3 printf
también es una buena idea en caso de que el lector no esté familiarizado con las cadenas de formato printf. Dicho esto, tampoco soy un gran admirador de su uso de texinfo, pero esta fue solo mi sugerencia para mejorar su respuesta haciendo uso de la documentación que existe más que señalar la falta de documentación en un formato específico.Existe la
prips
utilidad que genera una lista de IP desde un rango o CIDR. Útil para trabajar con grandes rangos:fuente
Puede usar el comando sed con seq para imprimir el rango de la dirección IP.
O usando echo y tr
fuente
El
printf
comando realiza una iteración implícita si recibe más argumentos que los especificadores de conversión. Por ejemplo:Hay dos conversiones, pero seis argumentos. Entonces ocurren tres repeticiones de la lógica de formato, marchando sobre los argumentos por pares.
Con eso podemos hacer:
El
printf
comando y su comportamiento repetitivo son estándar POSIX : "El operando de formato se reutilizará con la frecuencia necesaria para satisfacer los operandos del argumento". Por otro lado, elseq
comando no lo es.fuente
fuente
Si eliminamos el requisito de usar el
seq
comando, y suponemos que elipcalc
comando está disponible, y elprips
comando Ubuntu no lo está, entoncesprips
se puede implementar como una función de shell Bash:Tenga en cuenta que esto incluirá la dirección de red y la dirección de difusión en el rango; Si eso es un problema, elimine la primera y la última dirección del resultado.
fuente