Page 1 of 1
ip-adress peka mot domän (Loopia)
Posted: 24 Oct 2010, 15:01
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.
Re: ip-adress peka mot domän (Loopia)
Posted: 25 Oct 2010, 00:45
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

)
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
Re: ip-adress peka mot domän (Loopia)
Posted: 25 Oct 2010, 02:52
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
Re: ip-adress peka mot domän (Loopia)
Posted: 25 Oct 2010, 10:47
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.
Re: ip-adress peka mot domän (Loopia)
Posted: 25 Oct 2010, 13:51
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.
Re: ip-adress peka mot domän (Loopia)
Posted: 26 Oct 2010, 04:18
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
som resultat. Annars kommer det typ Ok eller Update.
Re: ip-adress peka mot domän (Loopia)
Posted: 26 Oct 2010, 08:29
by Supermannen
När jag gör det får jag upp: sed: -e expression #1, char 22: Unmatched ( or \(
Re: ip-adress peka mot domän (Loopia)
Posted: 26 Oct 2010, 08:59
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
Re: ip-adress peka mot domän (Loopia)
Posted: 26 Oct 2010, 09:53
by Supermannen
Thank you!

Re: ip-adress peka mot domän (Loopia)
Posted: 26 Oct 2010, 09:58
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)?
Re: ip-adress peka mot domän (Loopia)
Posted: 27 Oct 2010, 02:07
by tobbenet
Nice! Thank you, Harris! I'm doing the old "copy-paste without checking the results"
To schedule, type
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.
Re: ip-adress peka mot domän (Loopia)
Posted: 08 Jul 2012, 10:25
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