Soy consciente de los métodos en los que puede ejecutar un forbucle Bash y pingvarios 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 pinguna 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:npingestá en los repositorios EPEL estándar para arrancar.Uso
Para hacer ping a varios servidores, solo tiene que indicar
npinglos nombres / IP y el protocolo que desea utilizar. Aquí, dado que queremos imitar lo que hace lapingCLI tradicional , usaremos ICMP.El único inconveniente que he encontrado con esta herramienta es el uso del modo ICMP que requiere privilegios de root.
fuente
nmaptambié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
waitesperará 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; doen su primer ciclo. Si esto fuera zsh, podría evitar ladoydone, y acaba de hacer, interatively:for host in google.com; ping -c5 "$host" |& tail -3 & waitcommand &) en un subnivel (es decir, con envoltura parens) y con lawaitde 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
printfla capacidad de "iterar automáticamente" sus argumentos mientras reutiliza su cadena de formato sobre cada argumento. Por loprintftanto, 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 alevalcomando para que se ejecuten de inmediato.printfy losevalcomandos son estándar POSIX, así como la sustitución de comandos.Incluyendo todo dicho comando en una subshell que comprende un and-ed
waitcomo este:proporciona la capacidad de interrumpir todo a voluntad con un simple Ctrl+C.
De lo contrario, puede controlar cada
pingcomando 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 depings 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.8Tambié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.txtOpciones explicadas:
-snEscaneo de ping.-nDeshabilitar la resolución de DNS.-iLIngrese el nombre del archivo.Otras opciones interesantes en caso de que desee hacer ping a una gran cantidad de objetivos:
-T4Aumente el tiempo para reducir la duración del escaneo.--min-parallelism 100Aumentar 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
xargscomando común para construir y ejecutar múltiplespingsolicitudes:Donde
host1 host2 host3puede haber un número variable de hosts (cualquier combinación de IP o nombre de host).Esto altera los
xargsvalores 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,-Pse ha establecido en 10 para evitar el consumo excesivo de recursos.Script de ejemplo:
/usr/bin/mpingFunción de ejemplo dentro de
~/.bashrcY 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
pingllamada nunca regresa a menos que encuentre un error fatal.Utilice el siguiente comando simple:
fuente