Estoy escribiendo un script de wake on lan para un conjunto de nuestras computadoras de laboratorio. Tenemos sqlite db con una lista de los nombres de host, IP y MAC de la computadora y actualmente hago ping a cada uno de ellos con '-c1' para que no se ejecute interminablemente, pero incluso eso requiere un poco de espera, ¿hay una manera más rápida de obtener responder en lugar de ping? El uso de ping parece ralentizar bastante el script, ya que necesita las respuestas de ping para continuar.
Muchas gracias por cualquier sugerencia!
fuente
Para esto fue diseñado fping. http://fping.sourceforge.net/
Debe analizar la salida después en lugar de confiar en un código de retorno, pero es mucho más rápido que hacer un ping normal.
fuente
Esto solo funcionaría para una o dos computadoras, pero si las conecta directamente a la computadora responsable de verificar su estado, puede usar
ethtool
para ver si el enlace está activo o no.fuente
ethtool {network_interface} | grep "Link detected" | cut -f 3 -d ' '
volveráyes
si una máquina está conectada yno
si no lo está.Lo que podría hacer es hacer ping a la dirección de transmisión, lo que debería hacer que todas las computadoras vuelvan a hacer ping. Luego, podría comparar esta lista con lo que tiene en SQLite para asegurarse de que todas las computadoras estén en funcionamiento.
Aparte de eso, un ping es probablemente la forma más rápida de garantizar que una computadora esté despierta en una red. Como se menciona en la otra respuesta, esto no proporciona datos realmente útiles. Si tiene la capacidad de instalar scripts, puede agregar un cronjob para hacer ping a un servidor central, ejecutar una tarea o simplemente hacer eco de la lista de procesos en un servidor central que registrará la solicitud. Luego, simplemente verifique que le dirá si tiene algún problema sin necesidad de verificarlo manualmente cada vez.
fuente
Ganglia usa tráfico de multidifusión para monitorear muchos hosts en un clúster, ¿tal vez podría usar algo similar? Esto supone que su hardware de red permite el tráfico de multidifusión entre todos los hosts y su sistema de monitoreo.
fuente
Tuve el mismo problema y se me ocurrió el siguiente script (rápido y sucio). Esto esencialmente emite todos los pings como trabajos separados en paralelo y escaneará una subred completa / 24 en 3 segundos; tenga en cuenta que por alguna razón no me molesté en descubrir que no podía usar el código de resultado de ping aquí, pero grep -v hizo el trabajo:
fuente
Cía,
fuente
He encontrado
fping -r0 ...
para proporcionar la respuesta más rápida.La
-r
opción (reintentar) parece más rápida que la similar-c
(cuenta). El uso de-r0
resultados solo se envía un ping y la salida se abrevia mucho en comparación con otras opciones.En mi sistema ...
Resultados en ...
Un poco de masaje para deshacerme de los
ICMP
mensajes me da ...En cuanto a la velocidad,
fping
en este viejo Intel Dual-Core de 1.8GHz con 4GB de RAM es ...Y el
grep
ysort
parece agregar solo 0.001-0.004s al tiempo ...NOTAS
ICMP
mensaje no aparece en cada ejecución.2>&1
es necesaria para evitar que elICMP
mensaje de aparecer en la salida, ya que se envía alstderr
lugar destdout
.fuente