Seite 3 von 3
Re: DynDNS: NO-IP
Verfasst: Do 8. Mär 2012, 16:46
von faxe2110
Jo alles da
nur macht er kein ip update
Habe mal die ip geändert bei NO-IP. Im log steht es auch drinne, nur kommt kein Update der IP
08.03.2012 14:30:15: DDNSHOST: xxx.no-ip.biz - DYNIP: 91.xx.xx.xx - CURRENTIP: 88.xxx.xxx.xxx - answer: xxxx.no-ip.biz:1
08.03.2012 16:21:57: DDNSHOST: xxx.no-ip.biz - DYNIP: 91.xx.xx.xx - CURRENTIP: 88.xxx.xxx.xxx - answer: xxxx.no-ip.biz:1
08.03.2012 16:27:10: DDNSHOST: xxx.no-ip.biz - DYNIP: 91.xx.xx.xx - CURRENTIP: 88.xxx.xxx.xxx - answer: xxxx.no-ip.biz:1
08.03.2012 16:32:22: DDNSHOST: xxx.no-ip.biz - DYNIP: 91.xx.xx.xx - CURRENTIP: 88.xxx.xxx.xxx - answer: xxxx.no-ip.biz:1
08.03.2012 16:37:35: DDNSHOST: xxx.no-ip.biz - DYNIP: 91.xx.xx.xx - CURRENTIP: 88.xxx.xxx.xxx - answer: xxxx.no-ip.biz:1
Schade hätte ja klappen können
Re: DynDNS: NO-IP
Verfasst: Do 8. Mär 2012, 16:48
von feissmaik
hast du denn auch die passende URL für NO-IP gesetzt?
da darfste nur eine stehen haben die anderen bitte auskommentieren
also meine zapto.org wird damit aktuallisiert, deshalb denk ich das du noch irgendwas falsch eingestellt hast
Wenn du oben USERNAME["1"] und PASSWORD["1"] eingetragen hast musst du dafür auch einen passenden URL["1"] Eintrag haben .. standardmässig steht bei der no-ip update url aber eine "2" drin also das evtl. noch auf eine 1 ändern sodass es dann einheitlich aussieht:
Code: Alles auswählen
USERNAME["1"]="benutzer" # DDNS Benutzername1
PASSWORD["1"]="password" # DDNS Passwort1
DDNSHOST["1"]="host.no-ip.biz" # DDNS Hostname1
URL["1"]="http://dynupdate.no-ip.com/dns?username=%USER%&password=%PASS%&hostname=%HOST%"
an der URL selber brauchst du aber nichts verändern, die %USER% usw werden vom Script automatisch ersetzt und dienen hier nur als "platzhalter"
Re: DynDNS: NO-IP
Verfasst: Do 8. Mär 2012, 16:55
von faxe2110
Hmmm Sollte eigentlich:
Code: Alles auswählen
#!/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...
#
# Sonderzeichen im Password werden nun auch supported (danke IDDQD)
#
# credits: Didge2002, SnowHead, r00t, rj.2001, IDDQD
#
### CONFIG - START
# Zugangsdaten...
# es koennen mehrere accounts geupdated werden... (rest auskommentieren)
USERNAME["1"]="XX@XXX" # DDNS Benutzername1
PASSWORD["1"]="XXXXXX" # DDNS Passwort1
DDNSHOST["1"]="XXXXX.no-ip.biz" # DDNS Hostname1
#USERNAME["2"]="benutzer2" # DDNS Benutzername2
#PASSWORD["2"]="password2" # DDNS Passwort2
#DDNSHOST["2"]="host2.zapto.org" # DDNS Hostname2
#USERNAME["3"]="benutzer3" # DDNS Benutzername3
#PASSWORD["3"]="password3" # DDNS Passwort3
#DDNSHOST["3"]="host3.dyndns.org" # DDNS Hostname3
#
# Provider URL's - pro DDNSHOST muss wie oben ein dazu passendes URL["<zahl>"] angelegt werden!
# (beliebig erweiterbar)
#
# $USERNAME , $PASSWORD , $DDNSHOST werden innerhalb der URL mit %USER% , %PASS% , %HOST% angegeben!
#
#URL["1"]="http://%USER%:%PASS%@members.dyndns.org/nic/update?hostname=%HOST%"
URL["2"]="http://dynupdate.no-ip.com/dns?username=%USER%&password=%PASS%&hostname=%HOST%"
#URL["3"]="http://%USER%:%PASS%@members.dyndns.org/nic/update?hostname=%HOST%"
#
# BEISPIEL URL's
#
# DynDNS.org: "http://%USER%:%PASS%@members.dyndns.org/nic/update?hostname=%HOST%"
# No-IP.com: "http://dynupdate.no-ip.com/dns?username=%USER%&password=%PASS%&hostname=%HOST%"
# DYNServ.ca: "http://dynserv.ca/dyn/dynengine.cgi?name=%USER%&pass=%PASS%&func=set&domain=%HOST%"
# IPActive.de: "http://logon.ipactive.de/cgi-bin/logon_off.pl?V=2.1&B=%USER%&P=%PASS%&IP=%HOST%&F=1"
EVERY="300" # Zeit in Sekunden zwischen den Abfragen
LOG="1" # Erstelle Logfile hiervon? [0=nein; 1=ja]
# Verschicke EMail bei Problemen? [no=nein; yes=ja]
# ( benoetigt: apt-get install sendEmail )
EMAIL="no"
EMAILFROM="`hostname`@fqdn.net"
EMAILTO='admin@fqdn.net'
EMAILSERVER='mail.fqdn.net'
EMAILUSER=''
EMAILPASS=''
### 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
Osrcn="DDNSupdater.sh"
srcn=$(basename $0)
srcv="1.093"
srccfg="config.$Osrcn"
LOGFILE="/var/log/log.$Osrcn"
CHKFILE="/tmp/.$Osrcn"
PiDFILE="/tmp/.pid.$Osrcn"
OnlinePing="google.de"
ProfileSwitchSleep=2
IPCcfgdir="/var/emu/conf"
IPCfunctions="/var/emu/script/functions.sh"
IPCddnssrc="/var/emu/script/$Osrcn"
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"
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
# load script config?
[ -d "$IPCcfgdir" -a -f "$IPCcfgdir/$srccfg" ] && source $IPCcfgdir/$srccfg
[ ! -d "$IPCcfgdir" -a -f "$srccfg" ] && source $srccfg
# Verschicke EMail..
function send_EMail() {
MESSAGE=$1
SUBJECT="$Osrcn Problem"
if [ $EMAIL = "yes" ]; then
echo "Verschicke EMail.."
sendEmail -f $EMAILFROM -t $EMAILTO -u "$SUBJECT" -m "$MESSAGE" -s $EMAILSERVER -xu "$EMAILUSER" -xp "$EMAILPASS"
fi
}
# Simple URL encoding
function 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
}
function LOG_msg() {
message=$1
if [ $LOG = "1" ]; then
_DT=$(date +"%d.%m.%Y %H:%M:%S")
echo "$_DT: $message" >> $LOGFILE
fi
}
# fuer jedes "profil" (DDNSHOST) die jeweilige "action" abarbeiten (function-names)
function check_profils() {
ACTION=$1
for index in ${!DDNSHOST[*]}; do
eRROR=""
# get current ddnshost-ip and internet-ip...
get_IPs "$index"
if [ -z "$eRROR" ]&&[ "$DYNIP" != "$CURRENTIP" ]; then
# for each $ACTION...
if [ ! -z "$ACTION" ]; then
for actionfunction in $ACTION; do
$actionfunction "$index"
done
fi
fi
[ ! -z "$eRROR" ] && echo "$eRROR" && send_EMail "eRROR"
sleep $ProfileSwitchSleep
done
}
function abuse_check() {
index=$1
answer=$(cat ${CHKFILE}_answer)
MSG=""
if [ "$answer" = "abuse" ]; then
MSG="WARNING!! You abused the DNS update function! You must Unlock your hostname: ${DDNSHOST[$index]} !"
fi
[ "$answer" = "nohost" ] && MSG="ERROR: Unknown host ${DDNSHOST[$index]} !"
[ "$answer" = "badauth" ] && MSG="ERROR: Bad auth! Check USERNAME and PASSWORD setting for ${DDNSHOST[$index]} !"
if [ ! -z "$MSG" ]; then
echo "$MSG"
LOG_msg "$MSG"
send_EMail "$MSG"
fi
}
function get_IPs() {
index=$1
# get current dyndns host ip
DYNIP=$(ping -c 1 "${DDNSHOST[$index]}" | sed -n 1p | sed -e 's/(//g' -e 's/)//g' | cut -d " " -f3 | sed -e 's/\://g')
[ -z "$DYNIP" ]&& eRROR="Cant get IP of DDNSHOST: ${DDNSHOST[$index]}"
# get current internet ip
CURRENTIP=$(wget -q -O - http://myip.dnsomatic.com/)
if [ -z "$CURRENTIP" -o "$CURRENTIP" = " *" -o "$CURRENTIP" = "*1.0 *" ]; then
CURRENTIP=$(wget -q -O - http://www.whatismyip.org/)
fi
if [ -z "$CURRENTIP" -o "$CURRENTIP" = " *" -o "$CURRENTIP" = "*1.0 *" ]; then
CURRENTIP=$(wget -q -O - http://checkip.dyndns.org | grep IP | expr \`awk '{print $6}'\` : '\([0-9.]*\)')
fi
if [ -z "$CURRENTIP" -o "$CURRENTIP" = " *" -o "$CURRENTIP" = "*1.0 *" ]; then
CURRENTIP=$(wget -q -O - http://checkip.dyndns.org/ | grep "IP Address" | cut -d ' ' -f 6 | cut -d '<' -f 1)
fi
if [ -z "$CURRENTIP" -o "$CURRENTIP" = " *" -o "$CURRENTIP" = "*1.0 *" ]; then
CURRENTIP=$(wget -q -O - http://www.myip.ch/ | grep "IP Address" | cut -d ' ' -f4 | sed -e 's/\$//g' -e 's/\\r//g')
fi
[ -z "$CURRENTIP" ] && eRROR="Cant catch current internet ip"
#CURRENTIP=$(echo $CURRENTIP | sed -e 's/\://g' -e 's/\$//g' -e 's/\\r//g')
}
function do_update() {
index=$1
# Replace %USER% , %PASS% , %HOST%
URL=${URL[$index]}
URL=${URL//%USER%/`proc_url_encode "${USERNAME[$index]}"`}
URL=${URL//%PASS%/`proc_url_encode "${PASSWORD[$index]}"`}
URL=${URL//%HOST%/${DDNSHOST[$index]}}
wget -q -O ${CHKFILE}_answer $URL
answer=$(cat ${CHKFILE}_answer)
echo "DDNSHOST: ${DDNSHOST[$index]} - DYNIP: $DYNIP - CURRENTIP: $CURRENTIP - answer: $answer"
LOG_msg "DDNSHOST: ${DDNSHOST[$index]} - DYNIP: $DYNIP - CURRENTIP: $CURRENTIP - answer: $answer"
}
function 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
# check if online...
ONLINE=0
[ "$(ping -c1 "$OnlinePing" | grep -c "seq")" -eq 1 ] && ONLINE=1
# if online, check each DDNSHOST (array)...
[ "$ONLINE" ] && check_profils "do_update abuse_check"
sleep $EVERY
done
}
function show_status() {
for index in ${!DDNSHOST[*]}; do
get_IPs "$index"
if [ "$DYNIP" != "$CURRENTIP" ]; then
echo "The IP of ${DDNSHOST[$index]} ($DYNIP) does NOT match your current Internet-IP: $CURRENTIP"
echo "You should update immediately! (with: $0 now)"
else
echo "Your host ${DDNSHOST[$index]} with IP $DYNIP is still up to date: $CURRENTIP"
if [ -f "${CHKFILE}_answer" ]; then
answer=$(cat ${CHKFILE}_answer)
echo "Last Answer was: $answer"
fi
fi
echo " "
done
[ -f "$PiDFILE" ] && echo "Script seems to run in background with PID(s): $(cat $PiDFILE)"
}
function 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 -e "\rScript 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
rm -f $PiDFILE
}
function echo_PIDs() {
[ -f "$PiDFILE" ] && PID=$(cat $PiDFILE)
[ -z "$PID" ] && PID="$$ $!"
if [ -z "$PID" ]; then
echo "Seems script isnt running in background"
else
echo "Scripts currently ProcessIDs: $PID"
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])
check_profils "do_update abuse_check"
;;
[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
Re: DynDNS: NO-IP
Verfasst: Do 8. Mär 2012, 16:57
von feissmaik
hehe ne genau das was ich vermutet habe - du hast bei deiner URL eine 2 drin stehen für das 2 Profil was bei dir aber garnicht existiert
Re: DynDNS: NO-IP
Verfasst: Do 8. Mär 2012, 17:04
von faxe2110
Jo geändert und ES KLAPPT !!!!
Super vielen herzlichen Dank für deine Mühe und Ausdauer mit mir.
Faxe2110
Re: DynDNS: NO-IP
Verfasst: Do 8. Mär 2012, 17:05
von feissmaik
null problemo
Re: DynDNS: NO-IP
Verfasst: Do 8. Mär 2012, 19:29
von szonic
feissmaik hat geschrieben:@szonic: hatte ich ehrlich gesagt noch keine lust zu das irgendwie zu entwurschteln - hab den Thread aber oben angepinnt das er nicht unter geht
über i os sind auch beide Scripts verfügbar
PERFEKT!
Re: DynDNS: NO-IP
Verfasst: Do 8. Mär 2012, 19:46
von faxe2110
Habe dochnoch eine klitze kleine Frage. Ich habe eine Mail Adresse mit Domain. Wie schaffe ich es diese in dem Script einzubinden ?? SendMail hat ja anscheind probleme mit Googlemail !!!!!!
http://ipc.pebkac.at/forum/viewtopic.php?f=2&t=461