Problema: Un equipo conectado vía ethernet se desconecta sin motivo aparente. Este equipo se usa siempre remotamente, por lo tanto acceder físicamente a él para reiniciarlo no es una buena solución.
Solución: Automatizar el proceso de monitorizar el estado de la conexión del ethernet y levantarlo en caso de caída.
1- Crear script para ver el estado del ethernet y levantarlo si es necesario.
pi@bot ~ $ sudo touch /usr/local/bin/eth
pi@bot ~ $ sudo chmod 777 /usr/local/bin/eth
pi@bot ~ $ sudo nano /usr/local/bin/eth
#!/bin/bash
ok() {
STATE=$(ifconfig eth0 | grep "inet addr:" | sed 's/^ *inet addr/Lan/' | sed 's/ / /g')
IP=$(curl -s icanhazip.com)
if [ ! -z "$IP" ]; then
echo -n "Ip:$IP "
else
echo -n "IP ERROR - "
fi
echo "$STATE"
}
if [ "$1" == "--log" ]; then
echo -n $(date "+%d/%m/%Y %H:%M > ")""
fi
if ifconfig eth0 | grep -q "inet addr:"; then
ok
exit 0
fi
ERR=$(ifup --force eth0 2>&1)
OUT=$?
if [ $OUT -eq 0 ] ; then
echo -n "RESET OK - "
ok
else
echo "RESET FAIL - $ERR"
fi
2- Ejemplo de uso desde linea de comandos
pi@bot ~ $ eth
Ip:81.65.17.125 Lan:192.168.1.69 Bcast:192.168.1.255 Mask:255.255.255.0
pi@bot ~ $ eth --log
23/03/2014 21:14 > Ip:81.65.17.125 Lan:192.168.1.69 Bcast:192.168.1.255 Mask:255.255.255.0
pi@bot ~ $ sudo ifdown eth0
...
pi@bot ~ $ eth
RESET FAIL - ifup: failed to open statefile /run/network/ifstate: Permission denied
pi@bot ~ $ sudo eth
RESET OK - Ip:81.65.17.125 Lan:192.168.1.69 Bcast:192.168.1.255 Mask:255.255.255.0
3- Programar tarea cada 5 minutos
Editar el crontab de usuario root y añadir las siguientes lineas al final del fichero
pi@bot ~ $ sudo nano /etc/crontab
# Cada 5 minutos testeamos el ethernet
*/5 * * * * root /bin/bash /usr/local/bin/eth --log | grep "RESET\|ERROR" >> /var/log/eth.log
4- Ejemplos de log generado por crontab
20/03/2014 07:05 > RESET OK - Ip:81.65.17.125 Lan:192.168.1.69 Bcast:192.168.1.255 Mask:255.255.255.0
20/03/2014 16:05 > RESET OK - Ip:81.65.17.125 Lan:192.168.1.69 Bcast:192.168.1.255 Mask:255.255.255.0
21/03/2014 17:05 > RESET OK - Ip:81.65.17.125 Lan:192.168.1.69 Bcast:192.168.1.255 Mask:255.255.255.0