Soy consciente de los métodos en los que puede ejecutar un for
bucle Bash y ping
varios servidores, ¿existe una herramienta CLI de Linux que pueda usar que me permita hacer esto sin tener que recurrir a escribir un script Bash en ping
una lista de servidores? ¿uno a la vez?
Algo como esto:
$ ping host1 host2 host3
NOTA: Estoy buscando específicamente CentOS / Fedora, pero si funciona en otras distribuciones, también está bien.
networking
ping
icmp
slm
fuente
fuente
Respuestas:
Si observa el proyecto NMAP , encontrará que incluye herramientas adicionales además de justo
nmap
. Una de estas herramientas esnping
, que incluye la siguiente habilidad:nping
está en los repositorios EPEL estándar para arrancar.Uso
Para hacer ping a varios servidores, solo tiene que indicar
nping
los nombres / IP y el protocolo que desea utilizar. Aquí, dado que queremos imitar lo que hace laping
CLI tradicional , usaremos ICMP.El único inconveniente que he encontrado con esta herramienta es el uso del modo ICMP que requiere privilegios de root.
fuente
nmap
también es compatible con ICMP directamente al especificar la opción-sn
. Vea mi respuesta para más detalles.fping está en un paquete de Fedora con el mismo nombre y permite muchos hosts o un conjunto de direcciones IP.
fuente
Descripción:
fuente
Sugeriría usar GNU Parallel
la salida será intercalada
fuente
Sé que específicamente no es lo que estás pidiendo, sino un script bash para lograr esto:
Esto tomará sus puntos finales como argumentos de línea de comando y enviará un ping de 5 recuentos a cada uno como un proceso en segundo plano y luego esperará a que todos terminen antes de salir. Imprimirá las últimas tres líneas de la salida de ping que contiene estadísticas útiles sobre la tasa de éxito y la latencia.
fuente
wait
esperará todos los procesos secundarios activos, por lo que puede evitar el segundo ciclo. Creo que parte de la razón por la que se le pidió que no requiriera escribir un script bash es tener una solución que funcione en cualquier máquina sin tener que cargar o escribir un script. Hacerlo corto parece más favorable, por lo que creo que sería mejor evitar esa asignación de argumento y simplemente hacerlofor host; do
en su primer ciclo. Si esto fuera zsh, podría evitar lado
ydone
, y acaba de hacer, interatively:for host in google.com; ping -c5 "$host" |& tail -3 & wait
command &
) en un subnivel (es decir, con envoltura parens) y con lawait
de combinar cualquier número de comandos en un mismo comando artificial, por ejemplo:(for f in google.com yahoo.com microsoft.com; do ping $f & done; wait)
. Sus salidas se intercalarán, y cuando ctrl + c esto después de este comando, los tres procesos secundarios se eliminarán. El shell tiene muchas construcciones de control de trabajo potentes y este es uno de ellos.Supongo que esto puede hacer por ti?
Aprovecha
printf
la capacidad de "iterar automáticamente" sus argumentos mientras reutiliza su cadena de formato sobre cada argumento. Por loprintf
tanto, lo anterior produce una secuencia deping <hostname> &
cadenas para cada host proporcionado como argumento, y alimenta dicha secuencia de comandos a través del comando Substitución aleval
comando para que se ejecuten de inmediato.printf
y loseval
comandos son estándar POSIX, así como la sustitución de comandos.Incluyendo todo dicho comando en una subshell que comprende un and-ed
wait
como este:proporciona la capacidad de interrumpir todo a voluntad con un simple Ctrl+C.
De lo contrario, puede controlar cada
ping
comando individualmente a través del control de trabajo habitual del shell.Si su shell también es compatible con las sustituciones de proceso, también puede usar lo siguiente:
por unos pocos caracteres menos para escribir.
La esencia es la misma que para el
eval
, pero alimenta la secuencia deping
s al comando.
(akasource
) a través de la sustitución del proceso.fuente
Nmap admite escaneos de ping (ICMP) y múltiples hosts:
nmap -sn -n 127.0.0.1 8.8.8.8
También puede crear un archivo que contenga todas sus IP de destino (separadas por espacios o nuevas líneas) llamadas
targets.txt
. Entonces corre:nmap -sn -n -iL targets.txt
Opciones explicadas:
-sn
Escaneo de ping.-n
Deshabilitar la resolución de DNS.-iL
Ingrese el nombre del archivo.Otras opciones interesantes en caso de que desee hacer ping a una gran cantidad de objetivos:
-T4
Aumente el tiempo para reducir la duración del escaneo.--min-parallelism 100
Aumentar el número de sondas paralelas.-oG <file>
Escriba los resultados del escaneo en un archivo en formato Grepable.Sin crear un archivo
Tenga en cuenta que también puede renunciar a la creación de un archivo y usar a
-
para tomar la entrada de una tubería|
o mediante métodos tradicionales para redirigir la salida a través de STDIN.Ejemplos:
-o-
-o-
Referencias
fuente
Al usar el
xargs
comando común para construir y ejecutar múltiplesping
solicitudes:Donde
host1 host2 host3
puede haber un número variable de hosts (cualquier combinación de IP o nombre de host).Esto altera los
xargs
valores predeterminados para forzar 1 argumento de entrada por ejecución de ping y permite un número ilimitado de procesos secundarios paralelos (1 por host pinchado). Probablemente sea aconsejable establecer-P
(también conocido como--max-procs
) en un valor razonable si tiene la intención de hacer ping a un gran número de hosts (todos serán procesados; solo menos simultáneamente).Es lo suficientemente corto como para usarlo directamente, podría agregarse como una función a su perfil de shell o archivo rc, o convertirse en un pequeño script en su
$PATH
. En los ejemplos a continuación,-P
se ha establecido en 10 para evitar el consumo excesivo de recursos.Script de ejemplo:
/usr/bin/mping
Función de ejemplo dentro de
~/.bashrc
Y usar como:
fuente
--max-procs
/-P
. Sin embargo, para cuentas de host menores que-P
, todos los pings se ejecutan en paralelo, lo que significa que tomará tanto tiempo como la ejecución de ping más larga, en lugar de la suma de todos ellos.No sé qué quiere exactamente, pero podría cambiar el último conjunto de 8 bits al decimal 255, por lo que sus hosts recibirán una transmisión, en realidad, transmitirá paquetes de ping a todos los dispositivos que existen en una red.
fuente
Salida
fuente
&&
operador solo permite que el segundo comando se ejecute si el primer comando se completa con éxito (es decir, un código de salida de 0) y 2) el primer ping nunca terminará sin un ^ C para interrumpirlo. Considere agregar un parámetro -c y -w. Bienvenido al sitio!Solo por diversión y ganancias ...
Esto podría mejorarse fácilmente . Lo que lo hace bastante útil. :)
Para opciones adicionales, consulte las páginas de manual para bsd ping y Linux ping
HTH
EDITAR: ligeramente actualizado para finalizar las consultas de ping @ 6 pings cada una, y agregar opciones de página de manual.
fuente
ping
llamada nunca regresa a menos que encuentre un error fatal.Utilice el siguiente comando simple:
fuente