Good to Know Database

Shell Skript: Dyn.com Login Script


Der DynDNS-Provider Dyn - ehemals DynDNS - bietet unter anderem einen kostenlosen Dienst an, durch welchen man einen Domainnamen für die eigene dynamische IP-Adresse erhält. Dazu muss der Router oder ein System in Ihrem Netzwerk die öffentliche IP-Adresse, welche Ihnen Ihr Provider beim Verbindungsaufbau zugewiesen hat, an Dyn übermitteln. Anschließend kann Ihr Domainname in die dynamische IP-Adresse aufgelöst werden.

Bis etwa Mitte Mai 2013 war dieser Service von Dyn kostenlos und uneingeschränkt nutzbar. Inzwischen muss sich der Nutzer jedoch spätestens alle 30 Tage auf der Webseite von Dyn anmelden damit der kostenlose Account weiterhin genutzt werden kann. Das folgende Shell-Skript kann per Cronjob aufgerufen werden und übernimmt diese Aufgabe für Sie.

Bevor Sie das Skript ausführen sollten Sie den Benutzernamen für Ihren Dyn-Account und das dazugehörige Passwort durch die Optionen USERNAME und PASSWORD angeben.

###########################################################################
##                                                                       ##
##                         Dyn.com Login Script                          ##
##                                                                       ##
## Creation:    17.08.2013                                               ##
## Last Update: 23.02.2014                                               ##
##                                                                       ##
## Copyright (c) 2013-2014 by Georg Kainzbauer <http://www.gtkdb.de>     ##
##                                                                       ##
## This program is free software; you can redistribute it and/or modify  ##
## it under the terms of the GNU General Public License as published by  ##
## the Free Software Foundation; either version 2 of the License, or     ##
## (at your option) any later version.                                   ##
##                                                                       ##
###########################################################################
#!/bin/bash

# Dyn.com username
USERNAME=<USERNAME>

# Dyn.com password
PASSWORD=<PASSWORD>

# Temporary cookies file
COOKIEFILE=/tmp/dyndns_login.cookies

# Log file
LOGFILE=/var/log/dyndns_login.log

# Who will be informed in case if anything goes wrong (if you do not want to be informed via mail, set this option to "")
MAILNOTIFY="root@localhost"

# Subject of the notification mail
MAILSUBJECT="ERROR while login on Dyn.com"

# Lock file
LOCKFILE=/var/tmp/dyndns_login.lock

###################################################################
# NORMALLY THERE IS NO NEED TO CHANGE ANYTHING BELOW THIS COMMENT #
###################################################################

function log()
{
  echo `date +%d.%m.%Y%t%H:%M:%S` "    LOG:" $1 | tee -a ${LOGFILE}
}

function error()
{
  echo `date +%d.%m.%Y%t%H:%M:%S` "    ERROR:" $1 | tee -a ${LOGFILE}
  if [ -n "${MAILNOTIFY}" ] ; then
    echo `date +%d.%m.%Y%t%H:%M:%S` "    ERROR:" $1 | mail -s "${MAILSUBJECT}" ${MAILNOTIFY}
  fi
}

function pipe_not_empty()
{
  input=$(cat)
  if [ "$input" != "" ] ; then
    { printf '%s\n' "${input}"; } | "$@"
  fi
}

if [ -f ${LOCKFILE} ] ; then
  kill -0 $(cat ${LOCKFILE}) >/dev/null 2>&1
  if [ $? -eq 0 ] ; then
    error "Previous process still running."
    exit 1
  else
    log "Deprecated lock file found. Remove lock file."
    rm -f ${LOCKFILE}
  fi
fi

echo $$ >${LOCKFILE}

# Get multiform value
MULTIFORM=$(wget -q --save-cookies ${COOKIEFILE} https://account.dyn.com/entrance/ -O - | grep "multiform" | head -n1 | cut -f6 -d\')

# Login at Dyn.com with username and password
wget -q --save-cookies ${COOKIEFILE} --load-cookies ${COOKIEFILE} --post-data "username=${USERNAME}&password=${PASSWORD}&iov_id=&multiform=${MULTIFORM}&submit=submit" https://account.dyn.com/entrance/ -O - | egrep "<span>(Hi|Welcome)\&nbsp\;<b>${USERNAME}</b></span>" >/dev/null

# Check if login was successful
if [ $? = 0 ]; then
  log "Login successful"
else
  error "Login failed"
fi

# Logout from Dyn.com
wget -q --load-cookies ${COOKIEFILE} https://account.dyn.com/entrance/?__logout=1 -O - | grep "<title>Thank you for using Dyn.com</title>" >/dev/null

# Check if logout was successful
if [ $? = 0 ]; then
  log "Logout successful"
else
  error "Logout failed"
fi

rm -f ${COOKIEFILE}
rm -f ${LOCKFILE}

exit 0

Damit das Skript einmal pro Woche automatisch gestartet wird, sollte man noch die folgende Zeile in die Crontab eintragen.

0 6 * * 6 /root/sh/dyndns_login.sh >/dev/null 2>&1


Dieser Eintrag wurde am 18.08.2013 erstellt und zuletzt am 05.04.2015 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_33_2298.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer