New user's registration have been closed due to high spamming and low trafic on this forum. Please contact forum admins directly if you need an account. Thanks !

ip-adress peka mot domän (Loopia)

Got problems with your B2 or B3? Share and get helped!
Post Reply
Supermannen
Posts: 7
Joined: 15 Aug 2009, 06:27

ip-adress peka mot domän (Loopia)

Post by Supermannen »

Någon som vet hur jag enklast gör för att tex peka min ip-adress som jag har nu, och varje gång den byts till en domänadress på loopia? Har försökt med Curl, men hur jag än gör så får jag inte det till att funka. Har sökt på google, men vet inte ifall man behöver göra något speciellt med just bubba two? Alltså jag vill att varje gång jag får en ny ip-adress, så ska jag ändå kunna komma åt min server genom den domänen jag registrerat på loopia (en blabla.nu -adress.
DanielM
Posts: 637
Joined: 28 Mar 2008, 06:37
Location: Sweden

Re: ip-adress peka mot domän (Loopia)

Post by DanielM »

Supermannen wrote:Någon som vet hur jag enklast gör för att tex peka min ip-adress som jag har nu, och varje gång den byts till en domänadress på loopia? Har försökt med Curl, men hur jag än gör så får jag inte det till att funka. Har sökt på google, men vet inte ifall man behöver göra något speciellt med just bubba two? Alltså jag vill att varje gång jag får en ny ip-adress, så ska jag ändå kunna komma åt min server genom den domänen jag registrerat på loopia (en blabla.nu -adress.
(a little unsure about the language here. Is this an english or english/swedish forum? Well, since the question is in swedish I guess I'll answer in swedish as well :D )

Vad du behöver är att installera ddclient, finns en guide på wiki: http://wiki.excito.org/wiki/index.php/T ... DNS_Client

Jag kör själv ddclient mot Loopia, så jag klistrar in min konf, borde funka likadant för dig. Det här är alltså filen /etc/ddclient.conf:

Code: Select all

# /etc/ddclient.conf

daemon=7200

pid=/var/run/ddclient.pid
protocol=dyndns2
custom=yes
use=web, web=dns.loopia.se/checkip/checkip.php,
web-skip='Current IP Address:'
server=dns.loopia.se/XDynDNSServer/XDynDNS.php
#noforce

login=<Loopia username>
password=<Loopia password>

wildcard=yes
domain1.se
domain2.se
domain3.se
Den kollar varannan timme vilket publikt ip jag har och så meddelar den Loopia det för alla domänerna i listan längst ner (inklusive subdomäner).

/Daniel
tobbenet
Posts: 16
Joined: 25 Jun 2008, 08:30

Re: ip-adress peka mot domän (Loopia)

Post by tobbenet »

Hmmm.. jag kör curl som fungerar finfint! Lägg koden nedan i en fil och schemalägg den till att köra typ var 5:e minut..

Koden ska vara i en enda rad. Lägg till flera rader för fler domäner.

Code: Select all

curl -s --user '[USER]:[PASSWD]' "http://dns.loopia.se/XDynDNSServer/XDynDNS.php?hostname=[DOMAIN]
&myip="`curl -s dns.loopia.se/checkip/checkip.php |sed 's/^.*: \([^<]*).*$/\1/'` ; echo
Last edited by tobbenet on 26 Oct 2010, 04:18, edited 1 time in total.
Supermannen
Posts: 7
Joined: 15 Aug 2009, 06:27

Re: ip-adress peka mot domän (Loopia)

Post by Supermannen »

Okej! Tack för svaren!
Hade varit bra om jag fått det att fungera med Curl.
Låt oss säga att jag har detta som domänadress: abcde.nu och 12345 som lösenord. Exakt hur ska det stå i filen för att få det till att fungera. Ska jag skriva in det i tex loopiadns.sh (filen) och sedan köra den? För på det sättet jag försöka skriva in det så fungerar det inte. Gör säkert något fel i med jag är väldigt ovan inom detta. Skulle även vara bra om någon vill säga hur jag ska göra och skriva för att schemalägga det här så att den uppdateras tex var 5:e minut.
Supermannen
Posts: 7
Joined: 15 Aug 2009, 06:27

Re: ip-adress peka mot domän (Loopia)

Post by Supermannen »

Kan det vara någon inställning i bubban som spärrar så att det inte funkar? Har tex innan använt easyfind. Men använder det inte längre. När jag skriver sh loopiands.sh så kommer det ju inga felmeddelande.
tobbenet
Posts: 16
Joined: 25 Jun 2008, 08:30

Re: ip-adress peka mot domän (Loopia)

Post by tobbenet »

Code: Select all

curl -s --user 'abcde.nu:12345' "http://dns.loopia.se/XDynDNSServerXDynDNS.php?hostname=abcde.nu
&myip="`curl -s dns.loopia.se/checkip/checkip.php |sed 's/^.*: \([^<]*).*$/\1/'` ; echo
Lägg den raden (allt ska vara på en rad) typ i en fil loopiadns.sh och så kör du den med ./loopiadns.sh. Om inte några ändringar görs kommer det ut

Code: Select all

nochg
som resultat. Annars kommer det typ Ok eller Update.
Supermannen
Posts: 7
Joined: 15 Aug 2009, 06:27

Re: ip-adress peka mot domän (Loopia)

Post by Supermannen »

När jag gör det får jag upp: sed: -e expression #1, char 22: Unmatched ( or \(
Harris
Posts: 6
Joined: 31 May 2010, 05:32

Re: ip-adress peka mot domän (Loopia)

Post by Harris »

Looks like tobbenet lost an escape-char. Try this (again, as one line):

Code: Select all

curl -s --user 'abcde.nu:12345' "http://dns.loopia.se/XDynDNSServer/XDynDNS.php?hostname=abcde.nu&myip="`curl -s dns.loopia.se/checkip/checkip.php |sed 's/^.*: \([^<]*\).*$/\1/'` ; echo
Supermannen
Posts: 7
Joined: 15 Aug 2009, 06:27

Re: ip-adress peka mot domän (Loopia)

Post by Supermannen »

Thank you! :)
Supermannen
Posts: 7
Joined: 15 Aug 2009, 06:27

Re: ip-adress peka mot domän (Loopia)

Post by Supermannen »

Hur gör jag nu för att schemalägga den så att den startar av sig själv och uppdateras (ungefär var 5:e minut)?
tobbenet
Posts: 16
Joined: 25 Jun 2008, 08:30

Re: ip-adress peka mot domän (Loopia)

Post by tobbenet »

Nice! Thank you, Harris! I'm doing the old "copy-paste without checking the results" :D

To schedule, type

Code: Select all

crontab -e
and add the line

Code: Select all

*/15 * * * * /home/[user]/loopiadns.bat >/dev/null 2>&1
This will make the file run every 15 minutes with no output (you would get an email otherwise every 15 minutes)

Make sure the user you are logined as can run the file.
Supermannen
Posts: 7
Joined: 15 Aug 2009, 06:27

Re: ip-adress peka mot domän (Loopia)

Post by Supermannen »

Någon som kan svara på vad som som krävs för att detta scriptet ska funka på Bubba? För jag har fått det till att funka på min bubba2 för längesen, och det funkar fortfarande där. Men nu har jag problem när jag ska lägga in det på min nya bubba3. :) Tror det har med ssl att göra. Säkert något jag behöver installera. När jag tex skriver sh loopiadns2.sh update så får jag upp följande:

[: 156: 1: unexpected operator
[: 156: 1002: unexpected operator
[: 156: 0: unexpected operator
[: 156: customcacert: unexpected operator
[: 156: auto: unexpected operator
Jul 8 16:07:25 updatedns: error: could not update host=abc1.nu ip=auto response=abuse
Jul 8 16:07:25 updatedns: error: could not update host=abc2.nu ip=auto response=abuse

Code: Select all

#!/bin/bash 
# spam@jxvf.net

username="abc123"
password="abc123"
domainname="abc1.nu abc2.nu"

# set this to your ip address to override the lookup
ip="auto"

# log options
uselog="1"
logfile="$HOME/dnsupdate.log"


# curl options
# use default, if that fails with ssl errors, sort out your certs
# used by libcurl or use customcacert.
# to get a bundle collected from mozilla run:
# curl http://curl.haxx.se/ca/cacert.pem > $HOME/.curl_cacert.pem
#
# customcacert = uses a custom cacert pem bundle defined below,
# ignorecert = ignores errors. not recommended
#
curloption="customcacert"

# path to custom cacert
cacert="$HOME/.curl_cacert.pem"

# disable ssl, this is NOT recommended.
disablessl="0"

# where to store saved ip data
ipfile="$HOME/.dnsupdate_lastip.log"

# if you get errors and your curl supports ssl disable this
sslcheck="1"

#######################################################
allowroot="0"
log="$(date '+%b %e %T') updatedns:"
#######################################################

case $curloption in
	ignorecert) curlopt="-s -S -k" ;;
	customcacert) curlopt="-s -S --cacert $cacert" ;;
	*) curlopt="-s -S"
esac

PRINT_USAGE () {
	echo "Usage: updatedns.sh [update|force|showip]"
	echo "      if no option is given a normal update will be issued"
	echo "      and output will be written to \$logfile if \$uselog is"
	echo "      set"
	echo 
	echo " update"
	echo "      same as default but will not redirect output to \$logfile"
	echo
	echo " force"  
	echo "      forces an update to your domainname(s) with loopia, regardless"
	echo "      if your ip has not changed. will not redirect to \$logfile"
	echo
	echo " showip"
	echo "      shows your current ip and the ip saved on file"
}

UPDATE () {
	if [ "$uselog" == "1" ] && [ "$1" != "force" ] && [ "$1" != "update" ]; then
		exec >> $logfile 2>&1 
	fi
	if [ $(id -u) == "0" ] && [ "$allowroot" != 1 ]; then
		echo "$log error: wont run as root"
		exit 1
	fi

	if [ "$disablessl" == "1" ]; then
		protocol="http"
	else
		GETPROTOCOL
	fi
	if [ -z "$password" ] || [ -z "$username" ]; then
		echo "$log error: username or password not set"
		exit 1
	elif [ -z "$domainname" ]; then
		echo "$log error: domainname not set"
		exit 1
	elif [ "$curloption" == "customcacert" ] && [ ! -f "$cacert" ]; then
		echo "$log error: $cacert not found"
		exit 1
	fi
	OLDIP
	if [ "$ip" == auto ]; then
		GETIP
	fi
	if [ "$ip" != "$oldip" ] || [ "$1" == "force" ]; then
		for i in $domainname ; do 
			if ! sethost="$(curl $curlopt --user "$username":"$password" ""$protocol"://dns.loopia.se/XDynDNSServer/XDynDNS.php?hostname="$i"&myip="$ip"")" ; then
				echo "$log error: could not update host=$i ip=$ip"
			elif [ "$sethost" != "good" ]; then
				echo "$log error: could not update host=$i ip=$ip response=$sethost"
			else
				echo "$log info: updated host=$i ip=$ip response=$sethost"
				echo "$ip" > "$ipfile"
			fi
		done
	else
		echo "$log info: ip has not changed, not updating ip=$ip"
	fi
}

GETIP () {
	if ipc=$(curl $curlopt $protocol://dns.loopia.se/checkip/checkip.php) ; then
		ip=$(echo "$ipc"|sed -n 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\).*$/\1/p')	
	else
		echo "$log error: could not get ip number"
		exit 1
	fi
}

OLDIP () {
	if [ -f "$ipfile" ]; then
		if ! oldip="$(cat $ipfile|egrep "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$")"; 
then
			echo "$log error: cant parse $ipfile"
			exit 1
		fi
	fi
}

GETPROTOCOL () {
	if [ "$(curl -V|grep Protocols|grep https)" ] || [ "$check_ssl" == "0"  ]; then 
		protocol="https"
	else
		echo "$log error: your version of curl does not seem to support ssl for https."
		exit 1
	fi
}

SHOWIP () {
	GETPROTOCOL
	GETIP
	OLDIP
	echo "current: $ip"
	echo "saved: $oldip"
}

if [ -z "$1" ]; then
	UPDATE
else
	case $1 in
		force) UPDATE force ;;
		showip) SHOWIP ;;
		update) UPDATE update ;;
		*) PRINT_USAGE
	esac
fi
Post Reply