El problema del script es que te va a mandar un correo cada vez que mire si esa MAC está conectada o no.
Mejor ponemos un fichero de semáforo, que nos permita mandar un sólo correo, cada vez que haya un cambio, de presente a no presente, y viceversa.
Se me ocurre esto:
#!/bin/sh
CORREO="mi correo@gmail.com"
FICHERO=/tmp/MAC.txt
FICHERO_PRESENCIA=/tmp/MaryIsON.txt
TIEMPO=3
RANGO_IP=192.168.3.1-254
while :
do
echo $(nmap -v -sP $RANGO_IP) > $FICHERO
if grep "Mac del smartphone" $FICHERO
then
if [ ! -e $FICHERO_PRESENCIA]
then
echo -e "Subject:María está en casa." | sendmail $CORREO
echo 1 > $FICHERO_PRESENCIA
TIEMPO=20
fi
else
if [ -e $FICHERO_PRESENCIA ]
then
echo -e "Subject:María se ha ido." | sendmail $CORREO
rm $FICHERO_PRESENCIA
TIEMPO=3
fi
fi
sleep ${TIEMPO}m
done
Antes de mandar el correo, miramos si el fichero de presencia está. Si no está, mandamos correo, y creamos el fichero de presencia. Si ya está, no hacemos nada porque ya lo hemos mandado.
Cuando detectamos que María se ha ido, miramos si hay fichero de presencia, mandamos el correo, y borramos el fichero de presencia, para evitar que nos sigamos mandando correos.
Si detecta la presencia de la MAC, dormirá 20m, si no la detecta, dormirá 3m.
Para ejecutarlo, ponlo en el rc.local
/etc/conectado.sh &