3. Criando o script de checagem e envio
No Slackware para que um script seja executado por último lugar no boot, duas coisas são necessárias:
-   Que ele seja chamado pelo /etc/rc.d/rc.local
-   Que ele seja executável
Adicione as linhas abaixo em seu /etc/rc.d/rc.local como root:
if [ -x /etc/rc.d/rc.mailMyIp ]; then
   . /etc/rc.d/rc.mailMyIp start
fi
E vamos criar o rc.mailMyIp. Há 3 técnicas que gostaria de mencionar:
-  Na função MSG() envio os dados para um arquivo. Talvez você prefira comparar o IP atual com o que está no arquivo. No dia-a-dia achei mais fácil comparar sempre com o que está legível no e-mail, vai que você deleta a mensagem...
-  Eu obtenho o IP externo na linha 45:
 
 IP=`curl -s http://myip.com.br/index2.php | sed '/Seu IP/!d;s/.*IP://g;s/<.*//g;s/ //g'`
 
 Basicamente uso o curl para acessar um site que informa meu IP e "parseio" o endereço da mesma forma que fizemos com o e-mail.
 
 
-  A estratégia para enviar o e-mail é a seguinte:
 
 (a) A placa de rede tem um endereço válido (em casa é 192.x.y.z, por isso a linha 52);
 (b) Na linha 57 damos 3 tiros de ping para o google e contamos quantos chegam.
 (b.1) Dê preferência a usar o IP, porque em caso de DNS inacessível, o tempo de espera cai bastante. Caso o DNS esteja DISPONÍVEL há um ganho de 17% (OK, 0.192s em média).
 (b.2) Se nenhum ping chegar, não tem internet. Desencane do resto.
 (c) Se o ping chegou, busque o IP externo.
 (d) Pegue o IP lá do e-mail e compare os dois.
 (e) Se forem iguais não há nada a fazer.
 (f) Se forem diferentes envie o e-mail.
 (g) A versão start é para ser usada no boot, a versão check pelo cron.
3.1. O script rc.mailMyIp
Preciso deixar colorido, o que é para mudar?
Comece pelo ADDRS.
Cheque a linha 24.
Onde você pôs seu naviip (linhas 80, 106)?
O que posso fazer para melhorar isso?
Uma cópia deste script está aqui: 
http://pastebin.com/3m5zHPax 
Se você prefere ele cru: 
http://pastebin.com/raw.php?i=3m5zHPax 
# cd /etc/rc.d; touch rc.mailMyIp; chmod 700 rc.mailMyIp; 
# vim rc.mailMyIP
#!/bin/bash
###############
# DEFINITIONS #
###############
FILE=/tmp/.mailMyIP
DATE=`date +"%F %H:%M:%S"`
ADDRS="zeh@gmail.com"
MSMTP=`which msmtp`
PING=`which ping`
SED=`which sed`
PRINTF=`which printf`
IFCONFIG=`which ifconfig`
####################
# FUNCTIONS: BEGIN #
####################
MSG() {
   BODY="Subject: NAVI has booted, check your IP
Date: $DATE
NAVI was booted at $DATE
NAVI IP=$IP
"
    echo "$BODY" > $FILE
    echo "$BODY" | $MSMTP -C /root/.msmtprc $ADDRS
}
mailMyIp() {
   if [ -f $FILE ]; then
      OLDIP=`cat $FILE | sed '/IP=/!d;s/.*=//g'`
      [ "$IP" != "$OLDIP" ] && MSG
   else   
      MSG      
   fi
}
OK() {
   echo -e "\033[60G[  e[32;1mOKe[0m  ]"
}
FAIL() {
   echo -e "\033[60G[ e[31;1mFAILe[0m ]"
}
 
GET_IP() {
   IP=`curl -s http://myip.com.br/index2.php | sed '/Seu IP/!d;s/.*IP://g;s/<.*//g;s/ //g'`
   echo -n $IP
}
TEST_INET() {
   ETH0=`$IFCONFIG eth0 | sed '/inet /!d;s/.*r://g;s/..*$//g'`
   if [ $ETH0 -ne 192 ]; then
      echo "Network not available"
      exit -1
   else
      printf "%b" "Testing your Internet Connection:"
      PING_COUNT=`$PING -l3 -w1 173.194.34.104 2> /dev/null | $SED '/rec/!d;s/.*ted, //g;s/ .*//g'`
   fi
}
##################
# FUNCTIONS: END #
##################
case "$1" in
'start')
   TEST_INET   
   if [ $PING_COUNT -eq 0 ]; then
      FAIL
   else
      OK
      echo -n "   Retrieving external IP:   "
      GET_IP
      
      if [ -n "$IP" ]; then
         OK
         echo -en "   Retrieving IP from gmail: "
         NAVI_IP=`$HOME/bin/naviip`
         if [ -n "$NAVI_IP" ]; then
            echo -n "$NAVI_IP"
            OK
         else
            FAIL
         fi
         if [ "$IP" != "$NAVI_IP" ]; then
            echo -en "   Mailing the new IP to $ADDRS"
            MSG
            OK
         else
            echo "   Nothing to do."
         fi
      else
         FAIL
      fi   
   fi
   ;;
'check')
   TEST_INET > /dev/null
   if [ $PING_COUNT -ne 0 ]; then
      GET_IP >> /dev/null
      if [ -n "$IP" ]; then
         NAVI_IP=`/usr/local/bin/naviip`
         [ "$IP" != "$NAVI_IP" ] && MSG
      fi
   fi
   ;;
*)
   echo "usage $0 {start|check}"
esac