Buenas, tengo este script hecho en bash:
#!/bin/bash
#Obtengo la ip del router donde:
# -n Muestra la tabla de enrutamiento en formato numérico [dirección IP]
# tr -s quita los espacios
# cut corta la segunda columna
iprouter=`route -n|grep UG |tr -s " "|cut -d " " -f2`
#Obtengo la mac del router donde:
macrouter=`arp -n|grep -w $iprouter|tr -s " "|cut -d " " -f3`
if test -f /etc/mac_router.txt
then
echo $macrouter > /etc/mac_router.txt
else
touch /etc/mac_router.txt
echo $macrouter > /etc/mac_router.txt
fi
opcion=0
while [ $opcion -eq 0 ];
do
comprobar=`arp -n|grep -w $iprouter|tr -s " "|cut -d " " -f3`
mac=`cat /etc/mac_router.txt`
if [ "$mac" != "$comprobar" ]
then
notify-send "La mac del router ha cambiado"
fi
sleep 5s
done
Básicamente lo que hace el script es meter la mac del router en un txt y comprobar periodicamente si se ha cambiado o no para evitar un ataque man in the middle. En caso de que haya cambiado enviará una alerta con notify-send.
El script en cuestión si lo ejecuto manualmente con sh o ./ funciona perfectamente, pero si lo meto en el cron de root para que se ejecute cada minuto por ejemplo, no mete la mac en el txt ni hace nada, si lo meto en init.d y rc.local tampoco hace nada, y si lo meto en el runlevel 3 para que se inicie en el arranque mete la mac pero cuando modifico la mac para que me envie la alerta no sale ninguna alerta.
No sé qué puede estar fallando, si a alguien se le ocurre algo por favor que lo diga. Gracias.