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