Re: DynDNS: NO-IP

faxe2110
IPC Neuling
Beiträge: 19
Registriert: Sa 11. Feb 2012, 17:34
Kontaktdaten:

Re: DynDNS: NO-IP

Beitrag von faxe2110 »

Jo alles da :mrgreen: 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 :cry:
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:

Re: DynDNS: NO-IP

Beitrag 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"
Du musst nicht kämpfen um zu siegen
faxe2110
IPC Neuling
Beiträge: 19
Registriert: Sa 11. Feb 2012, 17:34
Kontaktdaten:

Re: DynDNS: NO-IP

Beitrag 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
feissmaik
Entwickler Team
Beiträge: 2576
Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:

Re: DynDNS: NO-IP

Beitrag 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 ;)
Du musst nicht kämpfen um zu siegen
faxe2110
IPC Neuling
Beiträge: 19
Registriert: Sa 11. Feb 2012, 17:34
Kontaktdaten:

Re: DynDNS: NO-IP

Beitrag von faxe2110 »

Jo geändert und ES KLAPPT !!!! :mrgreen:

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:

Re: DynDNS: NO-IP

Beitrag von feissmaik »

null problemo :geek:
Du musst nicht kämpfen um zu siegen
szonic
IPC Interessierter
Beiträge: 115
Registriert: Mi 25. Mai 2011, 17:30
Kontaktdaten:

Re: DynDNS: NO-IP

Beitrag 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! :)
faxe2110
IPC Neuling
Beiträge: 19
Registriert: Sa 11. Feb 2012, 17:34
Kontaktdaten:

Re: DynDNS: NO-IP

Beitrag 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
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste