faxe2110
IPC Neuling
Beiträge: 19 Registriert: Sa 11. Feb 2012, 17:34
Kontaktdaten:
Beitrag
von faxe2110 » Do 8. Mär 2012, 16:46
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
feissmaik
Entwickler Team
Beiträge: 2576 Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:
Beitrag
von feissmaik » Do 8. Mär 2012, 16:48
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"
Du musst nicht kämpfen um zu siegen
faxe2110
IPC Neuling
Beiträge: 19 Registriert: Sa 11. Feb 2012, 17:34
Kontaktdaten:
Beitrag
von faxe2110 » Do 8. Mär 2012, 16:55
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
feissmaik
Entwickler Team
Beiträge: 2576 Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:
Beitrag
von feissmaik » Do 8. Mär 2012, 16:57
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
Du musst nicht kämpfen um zu siegen
faxe2110
IPC Neuling
Beiträge: 19 Registriert: Sa 11. Feb 2012, 17:34
Kontaktdaten:
Beitrag
von faxe2110 » Do 8. Mär 2012, 17:04
Jo geändert und ES KLAPPT !!!!
Super vielen herzlichen Dank für deine Mühe und Ausdauer mit mir.
Faxe2110
feissmaik
Entwickler Team
Beiträge: 2576 Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:
Beitrag
von feissmaik » Do 8. Mär 2012, 17:05
null problemo
Du musst nicht kämpfen um zu siegen
szonic
IPC Interessierter
Beiträge: 115 Registriert: Mi 25. Mai 2011, 17:30
Kontaktdaten:
Beitrag
von szonic » Do 8. Mär 2012, 19:29
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!
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste