Archiv für den Monat: Mai 2014

DynDNS reconnect script

Jahrelang war DynDNS ein guter und kostenloser Anbieter für dynamischen DNS (eine Technik, um Domains im Domain Name System dynamisch zu aktualisieren). Dann allerdings musste man sich alle zwei Wochen anmelden, um den Dienst weiter nutzen zu können und schließlich gibt es nun garkeine Möglichkeit mehr kostenlose Domains bei DynDNS zu bekommen bzw. die alten zu behalten.
In dem Zeitraum, in dem man sich regelmäßig anmelden musste, habe ich auf meinem NAS ein Reconnect-Script benutzt, welches ich hier kurz vorstellen möchte, vielleicht lässt es sich in abgewandelter Form ja nochmal in einer anderen Situation einsetzen.


#!/bin/sh

#DEBUG=1

LOGIN="username"
PASSWORD="password"

COOKIES="/tmp/.dynsdns.cookies.txt"
AL="en-gb"
UA="Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"
LOGINURL="https://account.dyn.com/entrance/"
POSTURL="$LOGINURL"
CHKURL="https://account.dyn.com/"

[[ $DEBUG ]] && DST="-" || DST="/dev/null"

# random sleep time 1-3000
#DELAY=$(($(hexdump -n 2 -e '"%u"' /dev/urandom | tr -d '-' ) % 3000 + 1))
# If the method above didn't work, try the following method witk awk-srand.
# DELAY=$(awk 'BEGIN {srand(); print int (rand() * 3000) }')
#echo >&2 "Wait '$DELAY' sec..."
#sleep $DELAY

[[ -w "$( dirname "$COOKIES" )" ]] || { echo >&2 "FATAL: Cannot write to directory '$( dirname "$COOKIES" )'" ; exit 1; }

# Ensure no broken session caching...
if [[ -s "$COOKIES" ]]; then
[[ -w "$COOKIES" ]] || { echo >&2 "FATAL: Cannot write to file '$COOKIES'" ; exit 1 ; }
rm -f "$COOKIES" >/dev/null 2>&1
fi

[[ $DEBUG ]] && echo >&2 "DEBUG: Fetching initial headers to pre-load cookies..."
curl -b $COOKIES -c $COOKIES -Ikso "$DST" -A \"$UA\" --url "$LOGINURL"

[[ $DEBUG ]] && echo >&2 "DEBUG: Fetching UID..."
VALUE="$( curl -b $COOKIES -c $COOKIES -kso - -A "$UA" --url "$LOGINURL" | grep "multiform" | cut -d"'" -f 6 | head -n 1 )"
#VALUE="$(curl -b $COOKIES -c $COOKIES -kso - -A \"$UA\" --url "$LOGINURL" | \
# grep -m 1 "multiform" | \
# cut -d\' -f 6)"

[[ $DEBUG ]] && echo >&2 "DEBUG: Read UID as '$VALUE' - posting data..."
curl -b $COOKIES -c $COOKIES -d "username=$LOGIN" -d "password=$PASSWORD" -d "iov_id" -d "multiform=$VALUE" -e "$LOGINURL" -kso "$DST" -A \"$UA\" --url "$POSTURL"

[[ $DEBUG ]] && echo >&2 "DEBUG: Response received - verifying result..."
curl -b $COOKIES -c $COOKIES -e "$POSTURL" -kso - -A \"$UA\" -H "Accept-Language: $AL" --url "$CHKURL" | \
grep -qE "(Welcome|Hi) $LOGIN" \
&& echo "Login successful" \
|| { echo >&2 "Login failed" ; /sbin/write_log "DynDNS failed to login" 2;exit 1 ; }

exit 0

Um das Ganze jetzt noch automatisiert von statten laufen zu lassen bearbeitet man mit crontab -e 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.

Kleine Spiele für zwischendurch

Die c’t hatt mich auf zwei kleine Online-Spiele mit Informatikbezug gebracht, welche sich gut für den Zeitvertreib zwischendruch eignen.

Das erste Spiel ist Regex Golf. Hier muss man versuchen einen möglichst kurzen Regex-Ausdruck zu finden, der für die Wörter in der linken Spalte passt, aber nicht zu den Wörtern in der rechten Spalte.

Das zweite Spiel ist Untrusted . Mit Hilfe von Javascript muss man die Spielewelt so zu seinen Gunsten verändern, dass man den Ausgang zum nächsten Level erreichen kann.

Tipps für das Brettspiel „Der Hexer von Salem“

Wie der Titel des Blogs bereits erahnen lässt, soll es hier nicht nur um Themen der Informatik gehen.
Ich möchte an dieser Stelle ein paar Tipps für Einsteiger zum Brettspiel „Der Hexer von Salem“ geben, da sich dieses Spiel garnicht so einfach spielen lässt, wie man anfangs annehmen könnte.
Das Spiel macht es den Spielern durch folgende Umstände (unnötig) schwer:

  • Der Hexer, der uns mit bestimmten verbesserungen Ausstattet wenn er mit uns auf einem Feld steht, ist nie da, wo man ihn braucht, denn es wird in jeder Runde durch Kartenzug bestimmt wie weit dieser zieht.
  • Die Wahrscheinlichkeit beim Würfeln einen Gegenstand, den wir zum besiegen eines Monsters oder Schatten benötigen, zu verlieren, liegt bei einmaligem Wurf (unter bestimmten Umständen muss man mehrmals Würfeln) bei 1/6 bis 1/2, je nachdem wieviel unterschiedliche Gegenstände man zum besiegen des Monsters oder Schatten benötigt.

Folgende Tipps helfen vor allem für Neulinge:

  • Nicht auf das Töten von Monstern konzentrieren, sondern auf das Aufdecken der Portale. Monster kommen je nach Spieleranzahl jede Runde 1 bis 2 neue und so steht man vor einer nicht enden wollenden Aufgabe wenn man das Töten als Hauptziel ansieht. Aussnahme hierfür sind Monster die, sollte die Karte ein zweites mal erscheinen, einen verherrenden Effekt auf das Spielgeschehen haben. So z.B. die Hexe, bei der alle nicht versiegelten Portale wieder gemischt und neu auf dem Plan verteilt werden.
  • Eigentlich sollte man den Regeln nach nicht mit seinen Mitspielern darüber austauschen was sich hinter den verdeckten Portalen befindet. Meiner Meinung nach kann man aber auch mal ausprobieren ohne diese Regel zu spielen und danach entscheiden welche Spielart einem besser gefällt.
  • Auch wenn man nur zu zweit oder zu dritt spielt, kann man alle vier Charaktere auf das Spielbrett bringen. Der Nachteil, dass nun in jeder Runde zwei neue Monster auftauchen wird durch die Vorteile ausgeglichen. Zum einen haben die Spieler mehr verschiedenen Gegenstände, so dass die wahrscheinlichkeit, dass die richtige Kombination zum Töten eines Monster dabei ist, höher ist, zum Anderen bleibt ja die Anzahl der zu besuchenden Orte gleich, so ist das ebenfalls schneller erledigt.
    1. Ich hoffe diese Tipps sind für den ein oder anderen hilfreich. Solltet ihr noch weiter kennen, könnt ihr gerne einen Kommentar hinterlassen.