Script - DDNSupdater.sh
Re: Script - DDNSupdater.sh
Namd!
Wie sind die Einstellungen in der Vorkonfiguration für no-ip.com?
Gruß darkjudge
Wie sind die Einstellungen in der Vorkonfiguration für no-ip.com?
Gruß darkjudge
-
- Entwickler Team
- Beiträge: 2576
- Registriert: So 17. Apr 2011, 11:39
- Been thanked: 1 time
- Kontaktdaten:
Re: Script - DDNSupdater.sh
Steht doch im Script auch drin nur auskommentiert, oder?
Aber am besten wärs ihr nutzt das nachfolger Script DDNSupdater2.sh was auch über i os verfügbar ist.. da stehen dann mehrere URLs drin wo auch NO-IP datei is...
Code: Alles auswählen
URL="http://dynupdate.no-ip.com/dns?username=%USER%&password=%PASS%&hostname=$DDNSHOST"
Du musst nicht kämpfen um zu siegen
Re: Script - DDNSupdater.sh
Habe eine feste IP über Unity Media und Dein script DDNSupdater2.sh eingerichtet (möchte noch No-IP nutzen). und anschliessend in die crontab eingetragen. Zuerst wollte ich es testen mit
/var/emu/script/DDNSupdater.sh now
Lief ohne jegliche Meldung durch, und es wurde trotz log=1 kein logfile erstellt (Warum diesmal Ordner /var/log statt /var/log/ipc?). Hatte vorher Benutzer 2 und 3 rausgeixt und die URLs 2 und 3 ebenfalls (lasse ich Nutzer 2 und 3 drinnen, wird log erstellt mit Fehlermeldung).
Wenn ich mich jetzt direkt bei DynDNS einlogge, sehe ich, dass die IP zuletzt vor 5 Tagen aktualisiert wurde.
ddns status ergibt
Your host ***.dyndns.org with IP **.153.*** is still up to date: **.153.***
Last Answer was: badauth
Script seems to run in background with PID(s): 28685
woher kommt die Antwort badauth? das logfile ist gelöscht... User, Passwort und dyndns stimmen, hab ich gecheckt. Muss ich in der URL den User/PW in die %% selber eintragen oder macht das das script?
//edit: hab es, ich muss User, PW und host selber eintragen in die %%. Ist das so gewollt? Funktionieren in den %% keine Variablen?
/var/emu/script/DDNSupdater.sh now
Lief ohne jegliche Meldung durch, und es wurde trotz log=1 kein logfile erstellt (Warum diesmal Ordner /var/log statt /var/log/ipc?). Hatte vorher Benutzer 2 und 3 rausgeixt und die URLs 2 und 3 ebenfalls (lasse ich Nutzer 2 und 3 drinnen, wird log erstellt mit Fehlermeldung).
Wenn ich mich jetzt direkt bei DynDNS einlogge, sehe ich, dass die IP zuletzt vor 5 Tagen aktualisiert wurde.
ddns status ergibt
Your host ***.dyndns.org with IP **.153.*** is still up to date: **.153.***
Last Answer was: badauth
Script seems to run in background with PID(s): 28685
woher kommt die Antwort badauth? das logfile ist gelöscht... User, Passwort und dyndns stimmen, hab ich gecheckt. Muss ich in der URL den User/PW in die %% selber eintragen oder macht das das script?
//edit: hab es, ich muss User, PW und host selber eintragen in die %%. Ist das so gewollt? Funktionieren in den %% keine Variablen?
-
- Entwickler Team
- Beiträge: 2576
- Registriert: So 17. Apr 2011, 11:39
- Been thanked: 1 time
- Kontaktdaten:
Re: Script - DDNSupdater.sh
wo das log gespeichert wird kannst du selber einstellen - deswegen sind es variablen und nicht hardcoded... in /var/log weil es keine cam is, in /var/log/ipc/ liegen nämlich eigentlich nur die cam logs aber jeder wie er mag...
ein Log hätte aber geschrieben werden müssen... es sei denn es trat ein fehler auf? in jedem fall hätte er was auswerfen müssen, wenn garnix kam (ohne jegliche meldung) funktioniert irgendwas nicht....
bei "now" führt er die function "do_update" aus und wenn du dir mal anguckst steht ganz am ende ein echo und ein "LOG_msg" und die function LOG_msg wiederum guckt ob $LOG = 1 und wenn das der fall is wird ins logfile geschrieben...
"rausgeixt" ? wenn dann auskommentieren!! ( # )
beachte bitte das es im DDNSupdater2.sh sog. Profile gibt, jede Zahl ist ein Profil, also zu einer DDNSHOST["2"] muss es auch einen passenden USERNAME["2"] und PASSWORD["2"] geben und natürlich auch eine URL["2"] ... gibt es irgendeins davon nicht kommt natürlich ein fehler
Last Answer was: badauth ... dann passen deine Zugangsdaten nicht - diese meldung wird von dem jeweiligen dienst beim "do_update" zurück gegeben und in der function "abuse_check" geprüft .. die antwort wird in dem file /tmp/.DDNSupdater.sh_answer gespeichert
/EDIT: nein die musst du NICHT selber eintragen! Das sind absichtlich platzhalter die weiter unten im script automatisch ersetzt werden! das sind auch keine variablen!
wenn dann müsste jetzt irgendwas mit der function proc_url_encode nicht in ordnung sein, bitte verrate mir mal welche scriptversion du hast
ein Log hätte aber geschrieben werden müssen... es sei denn es trat ein fehler auf? in jedem fall hätte er was auswerfen müssen, wenn garnix kam (ohne jegliche meldung) funktioniert irgendwas nicht....
bei "now" führt er die function "do_update" aus und wenn du dir mal anguckst steht ganz am ende ein echo und ein "LOG_msg" und die function LOG_msg wiederum guckt ob $LOG = 1 und wenn das der fall is wird ins logfile geschrieben...
"rausgeixt" ? wenn dann auskommentieren!! ( # )
beachte bitte das es im DDNSupdater2.sh sog. Profile gibt, jede Zahl ist ein Profil, also zu einer DDNSHOST["2"] muss es auch einen passenden USERNAME["2"] und PASSWORD["2"] geben und natürlich auch eine URL["2"] ... gibt es irgendeins davon nicht kommt natürlich ein fehler
Last Answer was: badauth ... dann passen deine Zugangsdaten nicht - diese meldung wird von dem jeweiligen dienst beim "do_update" zurück gegeben und in der function "abuse_check" geprüft .. die antwort wird in dem file /tmp/.DDNSupdater.sh_answer gespeichert
/EDIT: nein die musst du NICHT selber eintragen! Das sind absichtlich platzhalter die weiter unten im script automatisch ersetzt werden! das sind auch keine variablen!
Code: Alles auswählen
URL=${URL//%USER%/`proc_url_encode "${USERNAME[$index]}"`}
URL=${URL//%PASS%/`proc_url_encode "${PASSWORD[$index]}"`}
URL=${URL//%HOST%/${DDNSHOST[$index]}}
Du musst nicht kämpfen um zu siegen
Re: Script - DDNSupdater.sh
also mit rausgeixt war natürlich auskommentiert gemeint, sorry für meine laxe Ausdrucksweise.
Das Script war Version 2.0, da hatte wohl was nicht funktioniert. Ich verwende jetzt Version 2.01, da wird upgedatet. Allerdings wird immer noch kein log geschrieben.
Wenn ich das richtig überblicke, wird ja immer ins logfile geschrieben (echo "$_DT: $message" >> $LOGFILE), aber es gibt keins. hmmm...
Das Script war Version 2.0, da hatte wohl was nicht funktioniert. Ich verwende jetzt Version 2.01, da wird upgedatet. Allerdings wird immer noch kein log geschrieben.
Wenn ich das richtig überblicke, wird ja immer ins logfile geschrieben (echo "$_DT: $message" >> $LOGFILE), aber es gibt keins. hmmm...
-
- Entwickler Team
- Beiträge: 2576
- Registriert: So 17. Apr 2011, 11:39
- Been thanked: 1 time
- Kontaktdaten:
Re: Script - DDNSupdater.sh
bei version 2.0 zu 2.01 hat sich nur die function proc_url_encode verändert indem ein paar mehr sonderzeichen dazu gekommen sind also wunderts mich jetzt ein bischen das es angeblich beim manuellen eintragen in die url funktioniert haben soll - gerade die sonderzeichen machen eigentlich wenn dann erst probleme
"echo "$_DT: $message" >> $LOGFILE" wird nicht immer gemacht - das steht innerhalb einer if-schleife dessen bedingung erst erfüllt sein muss und das is eben $LOG = "1"
aber das er absolut garnichts auswirft kann wie gesagt eigentlich nicht sein weil vor dem aufrufen von LOG_msg auch ein normales echo stehtwenn es da bereits ein problem gibt müsste aber zumindest eine fehlermeldung ausgeworfen werden...
ruf mal bitte das script im debug modus auf und poste ggf die ausgabe, dann siehst du was er macht
bash -x /var/emu/script/DDNSupdater2.sh now
Spoiler
Show
v2.0
v2.01
Code: Alles auswählen
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
}
Code: Alles auswählen
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};
out=${out//\!/%21}; out=${out//\"/%22}; out=${out//\@/%40}; out=${out//\'/%27};
out=${out//\(/%28}; out=${out//\)/%29}; out=${out//\*/%2A}; out=${out//\-/%2D};
out=${out//\_/%5F}; out=${out//\./%2E}; out=${out//\€/%80};
echo $out
}
Code: Alles auswählen
function LOG_msg() {
message=$1
if [ $LOG = "1" ]; then
_DT=$(date +"%d.%m.%Y %H:%M:%S")
echo "$_DT: $message" >> $LOGFILE
fi
}
Code: Alles auswählen
echo "DDNSHOST: ${DDNSHOST[$index]} - DYNIP: $DYNIP - CURRENTIP: $CURRENTIP - answer: $answer"
LOG_msg "DDNSHOST: ${DDNSHOST[$index]} - DYNIP: $DYNIP - CURRENTIP: $CURRENTIP - answer: $answer"
ruf mal bitte das script im debug modus auf und poste ggf die ausgabe, dann siehst du was er macht
bash -x /var/emu/script/DDNSupdater2.sh now
Du musst nicht kämpfen um zu siegen
Re: Script - DDNSupdater.sh
toller Tipp, das mit bash -x wusste ich nicht, macht vieles leichter . Log wird immer noch keines erstellt. Gerade habe ich das script manuell aufgerufen mit /var/emu/script/DDNSupdater.sh now -- und es wurde auch nicht upgedatet auf Dyndns.com -- seltsam. Hier die Ausgabe mit bash -x:
Habe gerade mal folgende url verwendet:
und da wurde upgedatet, hier die Ausgabe:
Es liegt wohl wirklich daran, dass Nutzer und Passwort nicht übernommen wurden, oder wird die Anzeige unter MyHosts bei Dyndns direkt erst Minuten später aktualisiert?
Code: Alles auswählen
+ USERNAME["1"]=***
+ PASSWORD["1"]=***
+ DDNSHOST["1"]=***.dyndns.org
+ URL["1"]='http://%USER%:%PASS%@members.dyndns.org/nic/update?hostname=%HOST%'
+ EVERY=90
+ LOG=1
+ EMAIL=no
++ hostname
+ EMAILFROM=oscam@fqdn.net
+ EMAILTO=admin@fqdn.net
+ EMAILSERVER=mail.fqdn.net
+ EMAILUSER=
+ EMAILPASS=
+ Osrcn=DDNSupdater.sh
++ basename /var/emu/script/DDNSupdater.sh
+ srcn=DDNSupdater.sh
+ srcv=2.01
+ srccfg=config.DDNSupdater.sh
+ LOGFILE=/var/log/ipc/log.DDNSupdater.sh
+ CHKFILE=/tmp/.DDNSupdater.sh
+ PiDFILE=/tmp/.pid.DDNSupdater.sh
+ OnlinePing=google.de
+ ProfileSwitchSleep=2
+ IPCcfgdir=/var/emu/conf
+ IPCfunctions=/var/emu/script/functions.sh
+ IPCddnssrc=/var/emu/script/DDNSupdater.sh
+ IPCddnslinkname=ddns
+ C='\033['
+ Ca='\033[0;33m'
+ Cb='\033[1;33m'
+ Cn='\033[0m'
+ ROT='\033[1;31m'
+ GRUEN='\033[1;32m'
+ BOLD='\033[1;37m'
+ Bo='\033[1m'
+ Bc='\033[21m'
+ Ro='\033[3m'
+ Rc='\033[23m'
+ Uo='\033[4m'
+ Uc='\033[24m'
+ Blo='\033[5m'
+ Blc='\033[25m'
+ Io='\033[7m'
+ Ic='\033[27m'
+ '[' -f /var/emu/script/functions.sh -a '!' -f /var/emu/script/DDNSupdater.sh ']'
+ '[' -d /var/emu/conf -a -f /var/emu/conf/config.DDNSupdater.sh ']'
+ '[' '!' -d /var/emu/conf -a -f config.DDNSupdater.sh ']'
+ '[' -f /var/emu/script/functions.sh -a -f /var/emu/script/DDNSupdater.sh ']'
+ linkname=ddns
+ case "$1" in
+ check_profils 'do_update abuse_check'
+ ACTION='do_update abuse_check'
+ for index in '${!DDNSHOST[*]}'
+ eRROR=
+ get_IPs 1
+ index=1
++ cut -d ' ' -f3
++ sed -e 's/(//g' -e 's/)//g'
++ sed -e 's/\://g'
++ sed -n 1p
++ ping -c 1 ***.dyndns.org
+ DYNIP=***
+ '[' -z *** ']'
++ wget -q -O - http://myip.dnsomatic.com/
+ CURRENTIP=88.153.152.x
+ '[' -z *** -o *** = ' *' -o *** = '*1.0 *' ']'
+ '[' -z ***-o *** = ' *' -o *** = '*1.0 *' ']'
+ '[' -z ***-o *** = ' *' -o *** = '*1.0 *' ']'
+ '[' -z *** -o *** = ' *' -o *** = '*1.0 *' ']'
+ '[' -z *** ']'
+ '[' -z '' ']'
+ '[' *** '!=' *** ']'
+ '[' '!' -z '' ']'
+ sleep 2
+ exit 0
Code: Alles auswählen
#URL["1"]="http://%USER%:%PASS%@members.dyndns.org/nic/update?hostname=%HOST%"
URL["1"]="http://%***%:%***%@members.dyndns.org/nic/update?hostname=%***.dyndns.org%"
Code: Alles auswählen
bash -x /var/emu/script/DDNSupdater.sh now
+ USERNAME["1"]=***
+ PASSWORD["1"]=***
+ DDNSHOST["1"]=***.dyndns.org
+ URL["1"]='http://%***%:%***%@members.dyndns.org/nic/update?hostname=%***.dyndns.org%'
+ EVERY=90
+ LOG=1
+ EMAIL=no
++ hostname
+ EMAILFROM=oscam@fqdn.net
+ EMAILTO=admin@fqdn.net
+ EMAILSERVER=mail.fqdn.net
+ EMAILUSER=
+ EMAILPASS=
+ Osrcn=DDNSupdater.sh
++ basename /var/emu/script/DDNSupdater.sh
+ srcn=DDNSupdater.sh
+ srcv=2.01
+ srccfg=config.DDNSupdater.sh
+ LOGFILE=/var/log/ipc/log.DDNSupdater.sh
+ CHKFILE=/tmp/.DDNSupdater.sh
+ PiDFILE=/tmp/.pid.DDNSupdater.sh
+ OnlinePing=google.de
+ ProfileSwitchSleep=2
+ IPCcfgdir=/var/emu/conf
+ IPCfunctions=/var/emu/script/functions.sh
+ IPCddnssrc=/var/emu/script/DDNSupdater.sh
+ IPCddnslinkname=ddns
+ C='\033['
+ Ca='\033[0;33m'
+ Cb='\033[1;33m'
+ Cn='\033[0m'
+ ROT='\033[1;31m'
+ GRUEN='\033[1;32m'
+ BOLD='\033[1;37m'
+ Bo='\033[1m'
+ Bc='\033[21m'
+ Ro='\033[3m'
+ Rc='\033[23m'
+ Uo='\033[4m'
+ Uc='\033[24m'
+ Blo='\033[5m'
+ Blc='\033[25m'
+ Io='\033[7m'
+ Ic='\033[27m'
+ '[' -f /var/emu/script/functions.sh -a '!' -f /var/emu/script/DDNSupdater.sh ']'
+ '[' -d /var/emu/conf -a -f /var/emu/conf/config.DDNSupdater.sh ']'
+ '[' '!' -d /var/emu/conf -a -f config.DDNSupdater.sh ']'
+ '[' -f /var/emu/script/functions.sh -a -f /var/emu/script/DDNSupdater.sh ']'
+ linkname=ddns
+ case "$1" in
+ check_profils 'do_update abuse_check'
+ ACTION='do_update abuse_check'
+ for index in '${!DDNSHOST[*]}'
+ eRROR=
+ get_IPs 1
+ index=1
++ sed -e 's/(//g' -e 's/)//g'
++ cut -d ' ' -f3
++ sed -n 1p
++ sed -e 's/\://g'
++ ping -c 1 ***.dyndns.org
+ DYNIP=***
+ '[' -z *** ']'
++ wget -q -O - http://myip.dnsomatic.com/
+ CURRENTIP=***
+ '[' -z *** -o *** = ' *' -o *** = '*1.0 *' ']'
+ '[' -z ***-o *** = ' *' -o *** = '*1.0 *' ']'
+ '[' -z ***-o *** = ' *' -o *** = '*1.0 *' ']'
+ '[' -z *** -o *** = ' *' -o *** = '*1.0 *' ']'
+ '[' -z *** ']'
+ '[' -z '' ']'
+ '[' *** '!=' *** ']'
+ '[' '!' -z '' ']'
+ sleep 2
+ exit 0
-
- Entwickler Team
- Beiträge: 2576
- Registriert: So 17. Apr 2011, 11:39
- Been thanked: 1 time
- Kontaktdaten:
Re: Script - DDNSupdater.sh
mh beiden posts zufolge wird aber nirgends $out ausgeworfen oder hast du das raus gecutted?
check_profils 'do_update abuse_check' ... hätte er machen sollen aber dessen output fehlt in deinen postings
btw: wenn du %USER% , %PASS% und %HOST% in der URL ersetzt musst du auch die % wegnehmen...
check_profils 'do_update abuse_check' ... hätte er machen sollen aber dessen output fehlt in deinen postings
btw: wenn du %USER% , %PASS% und %HOST% in der URL ersetzt musst du auch die % wegnehmen...
Du musst nicht kämpfen um zu siegen
-
- Entwickler Team
- Beiträge: 2576
- Registriert: So 17. Apr 2011, 11:39
- Been thanked: 1 time
- Kontaktdaten:
Re: Script - DDNSupdater.sh
...was mir grad erst aufgefallen is, er hat bei dir nix gemacht weil er
if [ -z "$eRROR" ]&&[ "$DYNIP" != "$CURRENTIP" ]; then
daran nicht vorbei kommt... deine $DYNIP entspricht der $CURRENTIP und dann macht er eben auch kein do_update und auch kein abuse_check.... und dann schreibt er natürlich auch nix ins log weil er nix gemacht hat
if [ -z "$eRROR" ]&&[ "$DYNIP" != "$CURRENTIP" ]; then
daran nicht vorbei kommt... deine $DYNIP entspricht der $CURRENTIP und dann macht er eben auch kein do_update und auch kein abuse_check.... und dann schreibt er natürlich auch nix ins log weil er nix gemacht hat
Du musst nicht kämpfen um zu siegen
Wer ist online?
Mitglieder in diesem Forum: Semrush [Bot] und 0 Gäste