Script de ping

David Ballester ballester.david en gmail.com
Mar Mar 24 17:41:49 GMT 2009


El mar, 24-03-2009 a las 18:16 +0100, PEPITOVADECURT escribió:

> #!/bin/bash
> IP1=XX.XX.XX.XX
> DATE=$(date +%Y%m%d'--'%T)
> 
> if ping -c 1 -w 3 $IP1; then
> 	echo "$DATE    La maquina $IP1 Esta OK" >> /var/log/vigilant.log
> else
> 	echo "$DATE !! La maquina $IP1 Esta KO" >> /var/log/vigilant.log
> 	ssmtp xx en xx.xx < ErrorIP1.txt
> fi
> --------------------------------------------------------------
> 
> Lo he añadido al cron y se ejecuta cada hora.
> 
> Luego veo los logs mediante el visor de logs que incorpora el webmin.
> 
> Estaré encantado que presentéis mejoras al script.
> 

No tengo claro que esté funcionando ya que en varios ejemplos en mi
terminal, el valor de exit de ping es 1


Yo verificaría el valor de packet loss devuelto, no es lo mismo que la
máquina no esté visible a que la máquina o la red esten ocupadas y
tarden en responder pero respondan. Además pasaría la ip por parámetro,
así puedes reutilizar el script para las ips que quieras

Algo así 


#!/bin/bash
# no hace falta llamar a date en un shell nuevo
DATE=`date +%Y%m%d'--'%T`
# obtenemos el % de packet loss en 3 pings que no pueden durar más de 3
#segundos
perdida=`ping -c 3 -W 3 $1 | grep "packet loss" | awk '{print $6}' `
#si hay un 100% de perdida de paquetes, la máquina no està visible
if [ "$perdida" == "100%" ]; then
  echo "$DATE    La maquina $1 Esta OK" >> /var/log/vigilant.log
else
  echo "$DATE !! La maquina $1 Esta KO" >> /var/log/vigilant.log
  ssmtp xx en xx.xx < ErrorIP1.txt
fi



No he probado la parte del ssmtp, pero el if si que funciona como
debería


D.




 echo "no ping"; else echo "ping"; fi




Más información sobre la lista de distribución ubuntu-es