#!/bin/bash
LOGDATEI="/usr/local/bin/wan_ip_check.log"
LOGDATEI_TMP="/usr/local/bin/wan_ip_check.log.tmp"
MAILSTATUS_FILE="/usr/local/bin/wan_ip_check.emailmessage.tmp"
MAILEMPFAENGER="xxxxxxx@xxxxx.de"
INFO_SYSTEMNAME="RaspberriPI"
DYNDNS_NAME="XXXX.dyndns.org"
echo "`date +%d-%m-%Y-%H:%M:%S` - Starte WAN IP Check ..." >$LOGDATEI_TMP
PING_ZIEL+=("192.168.100.14")
PING_ZIEL+=("192.168.100.1")
PING_ZIEL+=("193.99.144.80")
PING_ZIEL+=("46.18.63.152")
FUNKTION="1"
for i in ${PING_ZIEL[@]}
do
ping -c 3 $i >/dev/null
if [ $? -eq 0 ]
then
echo $i" erreichbar" >>$LOGDATEI_TMP
else
echo $i" NICHT erreichbar" >>$LOGDATEI_TMP
FUNKTION="0"
fi
done
if [ $FUNKTION -eq "1" ]
then
WAN_IP=`wget http://ipinfo.io/ip -qO -`
echo "ermittelte WAN IP: $WAN_IP" >>$LOGDATEI_TMP
DDNS=`dig +short $DYNDNS_NAME`
echo "Gespeicherte IP Adresse fuer $DYNDNS_NAME: $DDNS" >>$LOGDATEI_TMP
if [ $WAN_IP != $DDNS ]
then
echo "Unterschied festgestellt, Update DynDNS!" >>$LOGDATEI_TMP
wget -O - "http://USERNAME:PASSWORT@members.dyndns.org/nic/update?hostname=$DYNDNS_NAME"
echo "Versende INFO Mail" >>$LOGDATEI_TMP
SUBJECT="INFO `date +%d-%m-%Y-%H:%M:%S` $INFO_SYSTEMNAME WAN IP change!!!"
EMAILMESSAGE="`date +%d-%m-%Y-%H:%M:%S`\n\nWAN IP change from old $DDNS to new $WAN_IP\n"
echo -e $EMAILMESSAGE | mail -s "$SUBJECT" "$MAILEMPFAENGER"
fi
MAILSTATUS=`cat /usr/local/bin/wan_ip_check.emailmessage.tmp`
if [ $MAILSTATUS == "1" ]
then
echo "0" >$MAILSTATUS_FILE
SUBJECT="CLEAR `date +%d-%m-%Y-%H:%M:%S` $INFO_SYSTEMNAME network check!!!"
while read line
do
EMAILMESSAGE+="$line\n"
done < $LOGDATEI_TMP
echo -e $EMAILMESSAGE | mail -s "$SUBJECT" "$MAILEMPFAENGER"
echo "Versende CLEAR Mail und setze Status auf 0" >>$LOGDATEI_TMP
elif [ $MAILSTATUS -eq "0" ]
then
echo "CLEAR bereits versendet, kein Versand!" >>$LOGDATEI_TMP
else
echo "Fehler beim lesen des Mailstatus aus Datei!" >>$LOGDATEI_TMP
echo "0" >$MAILSTATUS_FILE
fi
else
MAILSTATUS=`cat /usr/local/bin/wan_ip_check.emailmessage.tmp`
if [ $MAILSTATUS -eq "0" ]
then
echo "1" >$MAILSTATUS_FILE
SUBJECT="ALARM `date +%d-%m-%Y-%H:%M:%S` $INFO_SYSTEMNAME network check!!!"
while read line
do
EMAILMESSAGE+="$line\n"
done < $LOGDATEI_TMP
echo -e $EMAILMESSAGE | mail -s "$SUBJECT" "$MAILEMPFAENGER"
echo "Versende ALARM Mail und setze Status auf 1" >>$LOGDATEI_TMP
elif [ $MAILSTATUS -eq "1" ]
then
echo "ALARM bereits versendet, kein Versand!" >>$LOGDATEI_TMP
else
echo "Fehler beim lesen des Mailstatus aus Datei!" >>$LOGDATEI_TMP
echo "0" >$MAILSTATUS_FILE
fi
echo "Verbindungsfehler!!!" >>$LOGDATEI_TMP
fi
echo "-------------------------------------------------------------------">>$LOGDATEI_TMP
cat $LOGDATEI_TMP >> $LOGDATEI
rm $LOGDATEI_TMP