das stimmt nicht. habe auch einen freeaccount (zapto.org) aber hab mich schon länger nicht mehr auf der no-ip.com homepage angemeldet: Last Login: 2012-02-22 06:17:51 PDTWenn Du bei no-ip einen Freeaccount hast, musst Du Dich einmal im Monat auf der HP einloggen und eine Aktuallisierung von Hand machen. Das ist unabhängig davon, ob Du nun einen automatischen Abgleich eingerichtet hast.
Freeuser haben eben ein paar Unannehmlichkeiten in Kauf zu nehmen.
#!/bin/bash
#
# DynamicDNSupdater - supports: DynDNS.org, NO-IP.com, DYNServ.ca and IPActive.de
#
# Es koennen auch verschiedene Dienste genutzt werden um mehrere DNS-Hosts
# zu nutzen, einfach Script kopieren, umbenennen, konfigurieren und erneut starten...
#
# Sonderzeichen im Password werden nun auch supported (danke IDDQD)
#
# credits: Didge2002, SnowHead, r00t, rj.2001, IDDQD
#
### CONFIG - START
USERNAME="benutzer" # DDNS Benutzername
PASSWORD="password" # DDNS Passwort
DDNSHOST="host.ath.cx" # DDNS Hostname
EVERY="300" # Zeit in Sekunden zwischen den Abfragen
LOG="1" # Erstelle Logfile hiervon? (wenn moeglich aus lassen) [0=nein; 1=ja]
# Provider URL's - Es darf nur EINE benutzt werden, alle anderen auskommentieren!
# (beliebig erweiterbar)
#
# NEU: $USERNAME und $PASSWORD werden innerhalb der URL mit %USER% und %PASS% definiert!
#
# DynDNS.org
URL="http://%USER%:%PASS%@members.dyndns.org/nic/update?hostname=$DDNSHOST"
# No-IP.com
#URL="http://dynupdate.no-ip.com/dns?username=%USER%&password=%PASS%&hostname=$DDNSHOST"
# DYNServ.ca
#URL="http://dynserv.ca/dyn/dynengine.cgi?name=%USER%&pass=%PASS%&func=set&domain=$DDNSHOST"
# IPActive.de
#URL="http://logon.ipactive.de/cgi-bin/logon_off.pl?V=2.1&B=%USER%&P=%PASS%&IP=$DDNSHOST&F=1"
### CONFIG - END
# -------------------------------------------------------------- #
# >>> >> > DO NOT MESS WiTH ANYTHiNG BELOW THiS LiNE! < << <<< #
# -------------------------------------------------------------- #
# required system cmd's:
# basename cat cut date echo expr killall ping rm sed sleep wget
CHECKIPURL="http://checkip.dyndns.org/"
CHECKIPURL2="http://www.myip.ch/"
srcn=$(basename $0)
srcv="1.08"
srccfg="config.$srcn"
LOGFILE="/tmp/log.$srcn"
CHKFILE="/tmp/.$srcn"
PiDFILE="/tmp/.pid.$srcn"
OnlinePing="google.de"
IPCcfgdir="/var/emu/conf"
IPCfunctions="/var/emu/script/functions.sh"
IPCddnssrc="/var/emu/script/$srcn"
IPCddnslinkname="ddns"
C="\033[";Ca="${C}0;33m";Cb="${C}1;33m";Cn="${C}0m";ROT="${C}1;31m";GRUEN="${C}1;32m";BOLD="${C}1;37m"
Bo="${C}1m";Bc="${C}21m"; Ro="${C}3m";Rc="${C}23m"; Uo="${C}4m";Uc="${C}24m"
Blo="${C}5m";Blc="${C}25m"; Io="${C}7m";Ic="${C}27m"
# create $srccfg...
proc_Create_Script_CFG() {
cfgVars="USERNAME PASSWORD DDNSHOST EVERY LOG URL"
NewCFG=$1
rm -f $NewCFG
echo "Erstelle ${NewCFG}.."
for cfgVar in $cfgVars; do
echo "$cfgVar=\"\$$cfgVar\"" >> $NewCFG
done
}
if [ -f "$IPCfunctions" -a ! -f "$IPCddnssrc" ]; then
echo ".. $srcn v$srcv .."
echo "Erstbenutzung dieses Scripts? IPC erkannt... kopiere Script $srcn..."
cp -f $0 $IPCddnssrc ; chmod 755 $IPCddnssrc >/dev/null 2>&1
# if [ -f "/sbin/$IPCddnslinkname" ]; then
# LinksCount=$(ls /sbin/${IPCddnslinkname}* | wc -l)
# ((++LinksCount))
# IPCddnslinkname="ddns$LinksCount"
# fi
echo -e "\nErstelle Symlink fuer ${Ro}$IPCddnslinkname${Rc} auf $IPCddnssrc"
ln -sf $IPCddnssrc /sbin/$IPCddnslinkname
echo -e "Nun muss noch der ${Ro}CONFIG${Rc} Abschnitt in dem Script $srcn angepasst werden!"
sleep 3
nano -R $IPCddnssrc
#[ ! -f "$IPCcfgdir/$srccfg" ] && proc_Create_Script_CFG "$IPCcfgdir/$srccfg"
echo -e "Fertig! Das Script kann kuenftig ueber den Befehl ${Ro}$IPCddnslinkname${Rc} ausgefuehrt werden"
$IPCddnssrc help
exit
fi
#[ ! -d "$IPCcfgdir" -a ! -f "$srccfg" ] && proc_Create_Script_CFG "$srcn.cfg"
# load srccfg?
[ -d "$IPCcfgdir" -a -f "$IPCcfgdir/$srccfg" ] && source $IPCcfgdir/$srccfg
[ ! -d "$IPCcfgdir" -a -f "$srccfg" ] && source $srccfg
# Simple URL encoding
proc_url_encode() {
out=${1//%/%25}; out=${out//\{/%7B}; out=${out//\}/%7D}; out=${out//|/%7C};
out=${out//\\/%5C}; out=${out//^/%5E}; out=${out//~/%7E}; out=${out//[/%5B};
out=${out//]/%5D}; out=${out//\`/%60}; out=${out//#/%23}; out=${out//>/%3E};
out=${out//\$/%24}; out=${out//&/%26}; out=${out//+/%2B}; out=${out//,/%2C};
out=${out//\//%2F}; out=${out//:/%3A}; out=${out//;/%3B}; out=${out//=/%3B};
out=${out//\?/%3F}; out=${out// /%20}; out=${out//</%3C};
echo $out
}
# Replace %USER% and %PASS% encoded in $URL
URL=${URL//%USER%/`proc_url_encode "$USERNAME"`}
URL=${URL//%PASS%/`proc_url_encode "$PASSWORD"`}
do_update() {
wget -q -O ${CHKFILE}_answer $URL
}
LOG_update() {
if [ $LOG = "1" ]; then
_DT=$(date +"%d.%m.%Y %H:%M:%S")
if [ -z "$1" ]; then
answer=$(cat ${CHKFILE}_answer)
echo "$_DT: HOSTIP: $HOSTIP - CURRENTIP: $CURRENTIP - answer: $answer" >>$LOGFILE
else
echo "$_DT: $1" >>$LOGFILE
fi
fi
}
abuse_check() {
answer=$(cat ${CHKFILE}_answer)
MSG=""
if [ "$answer" = "abuse" ]; then
MSG="WARNING!! You abused the DNS update function! You must Unlock your hostname: $DDNSHOST !"
fi
[ "$answer" = "nohost" ] && MSG="ERROR: Unknown host $DDNSHOST !"
[ "$answer" = "badauth" ] && MSG="ERROR: Bad auth! Check USERNAME and PASSWORD setting!"
if [ ! -z "$MSG" ]; then
echo "$MSG"
[ -z "$1" -a $LOG = "1" ] && echo "$MSG" >>$LOGFILE
fi
}
get_IPs() {
HOSTIP=$(ping -c 1 "$DDNSHOST" | sed -n 1p | sed -e 's/(//g' -e 's/)//g' | cut -d " " -f3 | sed -e 's/\://g')
wget -q -O ${CHKFILE}_current_ip $CHECKIPURL
CURRENTIP=$(cat ${CHKFILE}_current_ip | cut -d ' ' -f 6 | cut -d '<' -f 1)
if [ -z "$CURRENTIP" -o "$CURRENTIP" = " *" -o "$CURRENTIP" = "*1.0 *" ]; then
if [ ! -z "$1" ]; then
echo "Hmm... $CHECKIPURL seems to be down?! Using: $CHECKIPURL2 insteed"
fi
if [ -z "$1" -a $LOG = "1" ]; then
echo "Hmm... $CHECKIPURL seems to be down?! Using: $CHECKIPURL2 insteed" >>$LOGFILE
fi
wget -q -O ${CHKFILE}_current_ip $CHECKIPURL2
CURRENTIP=`cat ${CHKFILE}_current_ip | grep "IP Address" | cut -d ' ' -f4 | sed -e 's/\$//g' -e 's/\\r//g'`
fi
}
update_interval() {
PiDs="$$ $!"
echo $PiDs > $PiDFILE
echo "Running Script in Background with PID(s): $PiDs"
while true; do
[ ! -f "$PiDFILE" ] && echo "$srcn: Interval stopped" && break
ONLINE=0
[ "$(ping -c1 "$OnlinePing" | grep -c "seq")" -eq 1 ] && ONLINE=1
[ "$ONLINE" ] && get_IPs
if [ "$ONLINE" ] && [ "$HOSTIP" != "$CURRENTIP" ]; then
do_update
abuse_check
LOG_update
fi
sleep $EVERY
done
}
kill_script() {
counter="5"
[ -f "$PiDFILE" ] && PID=$(cat $PiDFILE)
[ -z "$PID" ] && PID="$$ $!"
echo "PID(s): $PID"
echo -n "Stopping Script"
if [ ! -z "$PID" ]; then
if ( kill -TERM $PID 2> /dev/null ); then
c=1
while [ "$c" -le 300 ]; do
if ( kill -0 $PID 2> /dev/null ); then
echo -n "."
sleep 1
else
break
fi
c=$((++c))
done
fi
if ( kill -0 $PID 2> /dev/null ); then
echo "Script is not shutting down cleanly - killing"
kill -KILL $PID
else
echo " done"
fi
#for P in $PID; do
# kill -9 $P >/dev/null 2>&1
# echo "Killed PID $P"
#done
else
echo "Nothing to $1!"
fi
#
#fixme
#
# sleep 5
# if [ ! -z `pidof -x sleep` ]; then
# while [ $counter -gt 0 ]; do
# echo "...Retrying to kill script! (retrys: $counter , PID: $PID)"
# kill -9 $PID >/dev/null 2>&1
# PID=$(pidof -x $0)
# PID="$PID `pidof -x sleep`"
# counter=`expr $counter - 1`
# done
# fi
#echo "Should be killed..."
rm -f $PiDFILE
}
echo_PIDs() {
[ -f "$PiDFILE" ] && PID=$(cat $PiDFILE)
[ -z "$PID" ] && PID="$$ $!"
if [ -z "$PID" ]; then
echo "Seems script isnt running in background"
else
#PID="$PID `pidof -x sleep`"
echo "Scripts currently ProcessIDs: $PID"
fi
}
show_status() {
get_IPs
if [ "$HOSTIP" != "$CURRENTIP" ]; then
echo "The IP of $DDNSHOST ($HOSTIP) does NOT match your current Internet-IP: $CURRENTIP"
echo "You should update immediately! (with: $0 now)"
else
echo "Your host $DDNSHOST with IP $HOSTIP is still up to date: $CURRENTIP"
if [ -f "${CHKFILE}_answer" ]; then
answer=$(cat ${CHKFILE}_answer)
echo "Last Answer was: $answer"
fi
echo_PIDs
fi
}
if [ -f "$IPCfunctions" -a -f "$IPCddnssrc" ]; then
linkname=$IPCddnslinkname
else
linkname=$0
fi
case "$1" in
"")
update_interval
;;
[aA][uU][tT][oO]|[sS][tT][aA][rR][tT])
bash $0 &
;;
[kK][iI][lL][lL]|[sS][tT][oO][pP])
kill_script $1
;;
[nN][oO][wW])
get_IPs
do_update
abuse_check
echo "HOST: $DDNSHOST - HOSTIP: $HOSTIP - CURRENTIP: $CURRENTIP"
echo "Answer: $answer"
;;
[pP][iI][dD]*)
echo_PIDs
;;
[sS][tT][aA][tT][uU][sS])
show_status
;;
[hH][eE][lL][pP]|[hH][iI][lL][fF][eE]|?)
echo "Usage: $linkname [now|auto|kill|status|pid|help]"
echo "$linkname now -> Force to update $DDNSHOST immediately (Sofortiges updaten von $DDNSHOST)"
echo "$linkname auto -> Checks/updates $DDNSHOST every $EVERY seconds (Ueberprueft/updated $DDNSHOST alle $EVERY Sekunden)"
echo "$linkname kill -> Kills running script (Script wird beendet)"
echo "$linkname status -> Zeigt den aktuellen Status, ob ein update noetig ist"
echo "$linkname pid -> Zeigt die verwendeten ProzessIDs dieses Scripts"
echo "$linkname help -> This help... (Zeigt diese Hilfe...)"
;;
*)
echo "Usage: $linkname [now|auto|kill|status|pid|help]"
;;
esac
exit 0
Wir verwenden Cookies und ähnliche Technologien für die folgenden Zwecke:
Akzeptieren Sie Cookies und diese Technologien?
Wir verwenden Cookies und ähnliche Technologien für die folgenden Zwecke:
Akzeptieren Sie Cookies und diese Technologien?