====== Detectar si hay conectividad, mediante un script ======
Hay ocasiones en las que puede ser necesario hacer que un script se ejecute solo si una PC tiene conectividad. Después de [[detectar_enlace_activo|detectar si el enlace está activo]], una manera frecuente de comprobarlo es utilizando el comando ''ping''.
===== Mediante el comando ping ====
**Variante simple:**
(ping -q -c 1 algun_equipo_accesible > /dev/null 2>&1) && comando_a_ejecutar
**Variante extendida:**
#! /bin/sh
ping -q -c 1 algun_equipo_accesible > /dev/null 2>&1
if [ $? -eq 0 ] ; then
comando_a_ejecutar
else
echo -e "Imposible encontrar el equipo.\nProbablemene no hay conectividad.\n"
fi
No obstante, en ocasiones no podemos utilizar el comando ''ping'' porque el protocolo ICMP ha sido deshabilitado en nuestra PC o nuestro cortafuegos.
Que hacer entonces? Afortunadamente, existen maneras alternativas de realizar la comprobación, he aquí algunos ejemplos:
===== Mediante el comando host =====
Una alternativa que podemos buscar al comando ''ping'' es realizando una consulta DNS, que podemos ejecutar con el comando ''host''.
**Variante simple:**
(host -t a algun_equipo_accesible > /dev/null 2>&1) && comando_a_ejecutar
**Variante extendida:**
#! /bin/sh
host -t a algun_equipo_accesible > /dev/null 2>&1
if [ $? -eq 0 ] ; then
comando_a_ejecutar
else
echo -e "Imposible encontrar el equipo.\nProbablemene no hay conectividad.\n"
fi
La comprobación mediante una consulta DNS es muy rápida, pero si algún equipo de la ruta tiene habilitada una //cache// para acelerar las consultas DNS, este método podría no funcionar.
===== Mediante el comando wget =====
Esta otra variante utiliza el comando ''wget'' en un modo especial, que solo responde si el sitio es o no accesible. No es tan rápida como la consulta DNS, pero podría resultar más confiable.
**Variante simple:**
(wget -q --timeout=5 --spider www.algun_sitio_accesible.org) && comando_a_ejecutar
**Variante extendida:**
#! /bin/sh
wget -q --timeout=5 --spider www.algun_sitio_accesible.org
if [ $? -eq 0 ]; then
comando_a_ejecutar
else
echo -e "Imposible encontrar el sitio.\nProbablemene no hay conectividad.\n"
fi