#!/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\\nDate: $DATE\\n\\nNAVI was booted at $DATE\\nNAVI IP=$IP\\n"
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[ \\033[32;1mOK\\033[0m ]"
}
FAIL() {
echo -e "\\033[60G[ \\033[31;1mFAIL\\033[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 2&>1 /dev/null
if [ $PING_COUNT -ne 0 ]; then
GET_IP 2&>1 /dev/null
if [ -n "$IP" ]; then
NAVI_IP=`/usr/local/bin/naviip`
[ "$IP" != "$NAVI_IP" ] && MSG
fi
fi
;;
*)
echo "usage $0 {start|check}"
esac