- Registriert
- 16. November 2009
- Beiträge
- 9.120
- Lösungen
- 4
- Reaktionspunkte
- 4.715
- Punkte
- 393
AW: Fritz 7490 mit mehreren Dyn-Accounts
solche scripts gibt es doch schon. Hier mal für 1 Dyndnadresse
DynUpdateCheck1.sh
Hier für mehrer Dyndnsadressen
DynUpdateCheck2.sh
solche scripts gibt es doch schon. Hier mal für 1 Dyndnadresse
DynUpdateCheck1.sh
Code:
#!/bin/sh
############################## config - Bereich ######################################################
### Usernamen, PW und Dyndns-Adresse eintragen ############
USERNAME="name"
PASSW="passwort"
DYNADDI="dyn.dyndns.org"
LOGPFAD=/var/media/ftp/uStor01/DynUpdateCheck.log # SpeicherOrt des LogFile
MAXLOGSIZE="100" # max Logfilegroesse in KB
### Dyn-Dienst hier eintragen, 3 Moeglichkeiten - "dyndns" oder "no-ip" oder "dnsomatic" ############
DYNDIENST="dyndns"
#### wenn E-Mail-Benachrichtigung gewuenscht,
## dann Zugangsdaten hier eintragen
EMAIL="no" # und hier "yes" eintragen
FROMMAIL="sender@gmx.de" # E-Mail Versender
TOMAIL="empfaenger@gmx.de" # E-Mail-Empfänger
MAILSRV="mail.gmx.net" # MAIL-SMTP-Server
PWMAIL="password" # Passwort vom Mailkonto
############################### 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
Hier für mehrer Dyndnsadressen
DynUpdateCheck2.sh
Code:
#!/bin/sh
user=user1@mail.de
pass=pass1
host=user1.no-ip.org
server=dynupdate.no-ip.com/nic/update
user2=user2
pass2=pass2
host2=user2.dyndns.org
server2=members.dyndns.org/nic/update
user3=user3@mail.de
pass3=pass3
host3=user3.no-ip.org
server3=dynupdate.no-ip.com/nic/update
trials=20 # Anzahl der Updateversuche bevor abgebrochen wird
wait=60 # Zeit in Sekunden zwischen den Abfragen
log=1 # Log Datei in /tmp erstellen (0=aus; 1=ein)
STATFILE=/tmp/dyndns.stat
LOGFILE=/var/media/ftp/uStor01/dyndns/dyndns.log
#######################################################################################################
counter=$trials
counter2=$trials
counter3=$trials
while [ 1 ]; do
dns=`ping -c 1 "$host" | sed -n 1p | sed -e 's/:.*//g' -e "s/PING $host //g" -e 's/(//g' -e 's/)//g'`
dns2=`ping -c 1 "$host2" | sed -n 1p | sed -e 's/:.*//g' -e "s/PING $host2 //g" -e 's/(//g' -e 's/)//g'`
dns3=`ping -c 1 "$host3" | sed -n 1p | sed -e 's/:.*//g' -e "s/PING $host3 //g" -e 's/(//g' -e 's/)//g'`
wget -q -O /tmp/akt_ip [URL="http://checkip.dyndns.org/"]Current IP Check[/URL]
ip=`cat /tmp/akt_ip | cut -d ' ' -f 6 | cut -d '<' -f 1`
echo ~Yreal IP~t~t~t$ip > $STATFILE
[ $ip != $dns ] && echo "$host" ~t~R$dns >> $STATFILE || echo "$host"~t~G$dns >> $STATFILE
[ $ip != $dns2 ] && echo "$host2" ~t~R$dns2 >> $STATFILE || echo "$host2"~t~G$dns2 >> $STATFILE
[ $ip != $dns3 ] && echo "$host3" ~t~R$dns3 >> $STATFILE || echo "$host3"~t~G$dns >> $STATFILE
if [ $counter != 0 ]; then
if [ $ip != $dns ]; then
dns_resp=`wget -q -O /tmp/dns.html http://$user:$pass@$server?hostname=$host&myip=$ip`
sleep 3
if [ $log = 1 ]; then
akt_date=`date +%d.%m.%Y`
akt_time=`date +%H:%M:%S`
echo "$akt_date $akt_time IP: $ip. DNS: $dns. $host: `cat /tmp/dns.html`" >> $LOGFILE
sleep 180
fi
counter=`expr $counter - 1`
else
counter=$trials
fi
fi
if [ $counter2 != 0 ]; then
if [ $ip != $dns2 ]; then
dns_resp=`wget -q -O /tmp/dns.html http://$user2:$pass2@$server2?hostname=$host2&wildcard=ON`
sleep 3
if [ $log = 1 ]; then
akt_date=`date +%d.%m.%Y`
akt_time=`date +%H:%M:%S`
echo "$akt_date $akt_time IP: $ip. DNS: $dns2. $host2: `cat /tmp/dns.html`" >> $LOGFILE
sleep 180
fi
counter2=`expr $counter2 - 1`
else
counter2=$trials
fi
fi
if [ $counter3 != 0 ]; then
if [ $ip != $dns3 ]; then
dns_resp=`wget -q -O /tmp/dns.html http://$user3:$pass3@$server3?hostname=$host3&myip=$ip`
sleep 3
if [ $log = 1 ]; then
akt_date=`date +%d.%m.%Y`
akt_time=`date +%H:%M:%S`
echo "$akt_date $akt_time IP: $ip. DNS: $dns3. $host3: `cat /tmp/dns.html`" >> $LOGFILE
sleep 180
fi
counter3=`expr $counter3 - 1`
else
counter3=$trials
fi
fi
sleep $wait
done
Zuletzt bearbeitet: