martes, 6 de julio de 2010

Shell script para saber si tenemos conexión a Internet

Para probar si una máquina tiene conectividad a internet puede utilizar el siguiente script:


#!/bin/bash

main()
{
ping -c 4 www.google.com > /dev/null
if [ "$?" -eq 0 ]
then
echo "Si hay internet";
else
echo "No hay internet";
fi
}

main


El código mostrado arriba hará 4 pings contra Google y si todo salé bien el comando retornará un 0 como estatus de salida (extraído con la variable $?). Luego, si las cosas salen mal retornará cualquier otro número mayor que 0. Se redirije la salida a /dev/null para no sacarla por pantalla o al correo del usuario dueño del proceso.

El script de arriba no funciona en redes donde se filtran paquetes ICMP. Debido a que estos filtros son habilitados comunmente podría agregarse la siguiente línea utilizando el comando wget.


#!/bin/bash

main()
{
wget www.yahoo.com > /dev/null
if [ "$?" -eq 0 ]
then
echo "Si hay internet";
else
echo "No hay internet";
fi
}

main

3 comentarios: