open_Netcenter Forum open_Netcenter Forum
Registrieren | FAQ | Suche | Mitgliederliste | Heutige Beiträge | Einloggen



Autor Thema: DynDNS per Shellscript aktualisieren
ivenae
Ist öfters hier
**
ID # 144



-979-261-40
  Erstellt am 04. Oktober 2007 00:22 (#1)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Falls Dyndns vom Router nicht unterstützt wird, hier ein Skript welches die Funktion übernimmt und dabei sogar alle IPs mitloggt.

Benötigt Curl, da die busybox wget-Funktion beim update versagt.
Daher wird leider zumindest beim Update einer neuen IP die Festplatte angefahren.

Damit eure Festplatte überhaupt die nötigen Anfragen ins Internet machen kann, müsst ihr eine resolv.conf haben.
Dazu tragt ihr in die rc.start folgenden Eintrag ein:

echo nameserver 10.10.10.10 > /tmp/resolv.conf

Wobei 10.10.10.10 eure Router IP ist, alternativ die Adresse eines Namensservers eures Providers.


Nicht vergessen den Logpath zu editieren und - ganz wichtig - USERNAME/PASSWORD/HOSTNAME für Dyndns eintragen.
Das Skript kann für andere DynDNS-Dienste leicht modifiziert werden.

Zum einrichten, Skript auf die Festplatte kopieren, Ausführungsrechte geben und mit

skript.sh &

in die rc.start schreiben.
Ggf. könnte es passieren, dass das Skript bei jedem durchlauf die Festplatte weckt (d.h. alle 3 min). Dann sollte man das Skript ggf. nach /tmp/ kopieren und von dort aus ausführen.


#!/opt/bin/bash

#Parameter-Settings

TIMEOUT=180
logfile=/opt/etc/iphistory.log
hostname=myhost.dyndns.org
username=peter
password=mypw

IPalt=$(sed -e '$!d' -e 's|.*IP=||' ${logfile}) # Gather last IP from Logfile

while [ 1 ] #Endless loop.
do
IP=$(/bin/wget -q -O - http://checkip.dyndns.org/ | /bin/sed -e 's|.*Address: ||; s|</body>.*||') #Get current WAN-IP
if [ "$IPalt" != "$IP" ]; then #if differs and ...
if [ "$IP" != "" ]; then # not empty then
timestamp=`date +"%Y-%m-%d~%R"` #Create a timestamp
/opt/bin/curl -u ${username}:${password} "http://members.dyndns.org/nic/update?hostname=${hostname}&myip=${IP}" #and Update
echo $timestamp IP=$IP >> ${logfile} #and write to logfile
IPalt=$IP #and set the current IP to the last-one

#Here you can add other programs you want to run, because the hdd woke up anyway

# checkup.sh
#
fi
fi
sleep $TIMEOUT
done

Beiträge: 40 | Mitglied seit: Oktober 2007 | IP-Adresse: gespeichert



| open_Netcenter Web - Infos, Handhabung, Anleitungen | Boardregeln


Tritanium Bulletin Board 1.6
© 2010–2014 Tritanium Scripts