Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

dyndns fällt manchmal aus bzw. offline

    Nobody is reading this thread right now.
AW: dyndns fällt manchmal aus bzw. offline

kann es sein das beide "DDNSupdater" nicht für den Account "selfhost.de" funktionieren? Habe beide ausprobiert und bekomme zb. unknown in Zeile 17, bedeutet der "Host: selfhost" ist unbekannt.
 
AW: dyndns fällt manchmal aus bzw. offline

starturk: führ mal das script mit dem parameter " help " aus dann sollte deine frage beantwortet sein..
(wenn du dir nicht sicher bist guck einfach mal in "i jobs" ganz am ende)


kallem: wie hast du es denn konfiguriert? theoretisch kann das script mit allen anbietern genutzt werden die auch eine url zum updaten anbieten.. du musst dann eben die entsprechende URL eintragen
(in zeile 17 steht bei mir im DDNSupdater.sh : " EVERY="300" # Zeit in Sekunden zwischen den Abfragen " also kann es nicht das sein was du meinst)
 
AW: dyndns fällt manchmal aus bzw. offline

wenn ich das script nehme ist die Zeile 17 wie makiert.
#!/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["xxxxxxx"]="LoginvonDynanbieter" # DDNS Benutzername1
PASSWORD["xxxxxxx"]="PassvonDynanbieter" # DDNS Passwort1
DDNSHOST["xxxxxxx.selfhost.me"]="eigentliche dynadresse" # DDNS Hostname1(Zeile17)

#USERNAME["2"]="benutzer2" # DDNS Benutzername2
#PASSWORD["2"]="password2" # DDNS Passwort2
#DDNSHOST["2"]="host2.zapto.org" # DDNS Hostname2

#USERNAME["3"]="user" # DDNS Benutzername3
#PASSWORD["3"]="pass" # DDNS Passwort3
#DDNSHOST["3"]="dynadresse" # 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="1500" # 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="absenderadresse"
EMAILTO='Empfängeradresse'
EMAILSERVER='selsterklärend'
EMAILUSER='Emailuser'
EMAILPASS='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 - )
if [ -z "$CURRENTIP" -o "$CURRENTIP" = " *" -o "$CURRENTIP" = "*1.0 *" ]; then
CURRENTIP=$(wget -q -O - )
fi
if [ -z "$CURRENTIP" -o "$CURRENTIP" = " *" -o "$CURRENTIP" = "*1.0 *" ]; then
CURRENTIP=$(wget -q -O - Current IP Check | grep IP | expr \`awk '{print $6}'\` : '\([0-9.]*\)')
fi
if [ -z "$CURRENTIP" -o "$CURRENTIP" = " *" -o "$CURRENTIP" = "*1.0 *" ]; then
CURRENTIP=$(wget -q -O - Current IP Check | 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 - Current IP Check | 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"
send_EMail "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"
send_EMail "DDNSHOST: ${DDNSHOST[$index]} - DYNIP: $DYNIP - CURRENTIP: $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

Ich muss dazu sagen das ich kein IPC benutze, aber es gibt ja viele Wege die zum Erfolg führen. Habe auch das alte script ausprobiert und dort genau die selbe Fehlermeldung.
Der Hacken an der Geschichte wird wohl sein, das Selfhost für die Einwahl am Server ein "user u. pass" hat (wie zb. no-IP), und für den eigentlichen "dynacount" einen anderen generierten "user mit passwort" anlegt, der auch nicht verändert werden kann.
Wie gesagt habe ich beide User-Daten ausprobiert, mit dem selben Ergebnis.
 
AW: dyndns fällt manchmal aus bzw. offline

Also müste ich den autostart rausholen wieder und in i jobs so einstellen?

#DDNSupdater2.sh
#@reboot root /var/emu/script/DDNSupdater2.sh auto #DDNSupdater2.sh bei System boot/reboot starten
0 6 * * 1 root /var/emu/script/DDNSupdater2.sh now #DDNSupdater2.sh Static-IP Update erzwingen (Woechentlich um 06:00, Montag)
 
AW: dyndns fällt manchmal aus bzw. offline

wenn du eine static ip hast dann machste das so wie du gequotet hast.. ansonsten kommentierst du das wöchentliche update aus und machst das mit der zeile dadrüber
 
AW: dyndns fällt manchmal aus bzw. offline

static ip heist feste IP?

die habe ich nicht.
 
Zurück
Oben