Einführung

Seit kurzer Zeit muss man sich, damit man seinen Hostnamen nicht verliert, jeden Monat im Account von DynDNS.org einloggen. Mit einem einfachen Skript und einem Crontab Eintrag lässt sich das automatisieren.

Automatisch einloggen

Folgendes Skript automatisiert das Login im Account von DynDNS.org. Man muss nur noch den Usernamen und das Passwort eintragen.

#!/usr/bin/env bash
#
# dyndnslogin - Automate login to prevent account expiration
#

########################################################################
# DynDNS Settings (default-value, overwrite with $1 and $2)
# If you have special chars in your password, you need to urlencode:
# python -c "from urllib.parse import quote;
#   print(quote('your password', safe=''))"
DEFAULT_USERNAME="username"
DEFAULT_PASSWORD="password"


# Import settings from /etc/ddclient.conf if available
DDCONF="/etc/ddclient.conf"
if [ -r "$DDCONF" ] && grep -q "^server=members.dyndns.org" "$DDCONF"
then
    DEFAULT_USERNAME="`awk -F= '/^login=/{ print $2 }' $DDCONF`"
    DEFAULT_PASSWORD="`awk -F= '/^password=/{ print $2 }' $DDCONF`"
fi

USERNAME=${1:-$DEFAULT_USERNAME}
PASSWORD=${2:-$DEFAULT_PASSWORD}

PROGNAME=dyndnslogin
COOKIE=`mktemp --tmpdir="/tmp" -t ${PROGNAME}_cookie_XXXXX`
OUTPUT=`mktemp --tmpdir="/tmp" -t ${PROGNAME}_output_XXXXX`
USERAGENT="Mozilla/5.0"

MULTIFORM=`curl -s -A $USERAGENT -c $COOKIE https://account.dyn.com \
  | awk -F\' '/multiform/{ print $6 }'`

curl -s --location -A "$USERAGENT" -b $COOKIE -c $COOKIE -o $OUTPUT \
  --data-urlencode "username=$USERNAME&password=$PASSWORD&iov_id=&submit=Log+in&multiform=$MULTIFORM" \
  https://account.dyn.com/

if grep -i -E "(Welcome|Hi).*$USERNAME" $OUTPUT > /dev/null 2>&1
then
  echo Login successful
else
  echo Login failed
  FAILED="true"
fi

rm $COOKIE
rm $OUTPUT

if [ "$FAILED" = "true" ]
then
  exit 1
fi

Nach dem Ausführen erhält man die Rückmeldung, ob das Login funktioniert hat oder nicht.

Automatisieren

Mit crontab -e bearbeitet man die Crontab und fügt dort folgende Zeile ein:

5 23 * * 0 /usr/local/bin/dyndnslogin

Somit wird an jedem Sonntag um 23:05h ein Login im DynDNS.org Account gemacht.