#!/bin/sh
############################## config - Bereich ######################################################
### Usernamen, PW und Dyndns-Adresse eintragen ############
#
USERNAME="user_bei_dyndns"
PASSW="pass_bei_dyndns"
DYNADDI="meinhost.dyndns.org"
LOGPFAD=/var/log/DynUpdateCheck.log
MAXLOGSIZE="16" # max Logfilegroesse in KB
#
### Dyn-Dienst hier eintragen, 3 Moeglichkeiten - "dyndns" oder "no-ip" oder "dnsomatic" ############
DYNDIENST="dyndns"
#
############################### config Ende ###############################################################
#############################################################################################################
#
DATUM=`date +%Y-%m-%d\ %H:%M:%S`
HOSTIP=$(wget -q -O - http://myip.dnsomatic.com)
### die folgende Zeile nur auf einer Fritzbox aktiviert lassen (auf einer Dream z.B. gibt es kein "get_ip")#
[ -z $HOSTIP ] && HOSTIP=$(/usr/bin/get_ip -e)
###
[ -z $HOSTIP ] && HOSTIP=$(wget -q -O - http://www.whatismyip.de | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>')
[ -z $HOSTIP ] && HOSTIP=`wget -q -O - http://checkip.dyndns.org | grep IP | expr \`awk '{print $6}'\` : '\([0-9.]*\)'`
[ -z $HOSTIP ] && HOSTIP=$(wget -q -O - http://www.ip-lookup.de | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>')
[ -z $HOSTIP ] && HOSTIP=$(wget -q -O - http://my.ip.fi)
sleep 1
[ $DYNDIENST = "dyndns" ] && URL="http://$USERNAME:$PASSW@members.dyndns.org/nic/update?hostname=$DYNADDI&myip=$HOSTIP"
[ $DYNDIENST = "dnsomatic" ] && URL="http://$USERNAME:$PASSW@updates.dnsomatic.com/nic/update?hostname=all.dnsomatic.com&myip=$HOSTIP"
[ $DYNDIENST = "no-ip" ] && URL="http://$USERNAME:$PASSW@dynupdate.no-ip.com/nic/update?hostname=$DYNADDI&myip=$HOSTIP"
if [ ! -z $HOSTIP ]; then
DYNIP=$(ping -c 1 "$DYNADDI" | sed -n 1p | sed -e 's/(//g' -e 's/)//g' | cut -d ' ' -f3 | cut -d ':' -f1)
if [ -z $DYNIP ]; then
echo "$DATUM - keine DYN-IP bekommen. Updatepruefung kann nicht ausgefuehrt werden. " >> $LOGPFAD
else
if [ $DYNIP = $HOSTIP ]; then
if [ -f $LOGPFAD ]; then
LOGGROESSE=$(du -k $LOGPFAD | cut -f 1 )
sleep 1
if [ $MAXLOGSIZE -le $LOGGROESSE ]; then
if [ $EMAIL = "yes" ]; then
mailer \
-s "DynUpdateCheck max Logfilegroesse erreicht - Logfile wird geloescht" \
-d "$LOGPFAD" \
-f $FROMMAIL \
-t $TOMAIL \
-m $MAILSRV \
-a $FROMMAIL \
-w $PWMAIL
sleep 15
fi
echo "$DATUM - DYN-IP ist:$DYNIP die Host-IP ist:$HOSTIP alles OK!" > $LOGPFAD
fi
[ $MAXLOGSIZE -gt $LOGGROESSE ] && echo "$DATUM - DYN-IP ist:$DYNIP die Host-IP ist:$HOSTIP alles OK!" >> $LOGPFAD
else
echo "$DATUM - DYN-IP ist:$DYNIP die Host-IP ist:$HOSTIP alles OK!" >> $LOGPFAD
fi
else
echo "$DATUM - DYN-IP ist:$DYNIP die Host-IP ist:$HOSTIP ein Update wird durchgefuehrt!" >> $LOGPFAD
UPDATE=$(wget -q -O - "$URL")
echo "$UPDATE" > /tmp/DynTMP.log
sleep 2
MELDUNG=$(cut -d' ' -f 1 /tmp/DynTMP.log)
if [ $MELDUNG = "good" ]; then
echo "$DATUM - $UPDATE Dyn-Update ist erfolgt - Script Ende" >> $LOGPFAD
if [ $EMAIL = "yes" ]; then
mailer \
-s "Dynamic DNS Probleme - DynUpdate ist erfolgt Meldung: $UPDATE" \
-f $FROMMAIL \
-t $TOMAIL \
-m $MAILSRV \
-a $FROMMAIL \
-w $PWMAIL
fi
else
echo "$DATUM - Dyn-Update war nicht erfolgreich." >> $LOGPFAD
if [ $EMAIL = "yes" ]; then
mailer \
-s "Dynamic DNS Probleme - DynUpdate war nicht erfolgreich Meldung: $UPDATE" \
-f $FROMMAIL \
-t $TOMAIL \
-m $MAILSRV \
-a $FROMMAIL \
-w $PWMAIL
fi
fi
fi
fi
else
echo "$DATUM Keine Host-IP bekommen! Eventuell nicht online?" >> $LOGPFAD
fi