#!/bin/bash # # 23.07.2005 Version 0.1 Initiale Version # 24.07.2005 Version 0.2 Pruefungen auf Plausibilitaet der LoginURL eingebaut # (muss https://dbd.dslonair.de) sein # Dieses Script prüft den Onlinestatus der DSLonAir Verbindung # und fuehrt ggfs. einen erneuten Login aus # # Dabei stellt es sicher, dass die Anmeldung nur per HTTPS an dem Host dbd.dslonair.de erfolgt # Hier die individuellen Parameter eintragen TESTURL=http://dsl.leichsenring.net/ok.html LOGINUSR=hier Dein DSL Username LOGINPWD=hier Dein DSL Passwort # Logile LOGFILE=/var/log/dsl-logon.log # Testen, ob eine http-Verbindung zum Internet (zur Test-URL) möglich ist RESULT=$(curl --silent --output /dev/null --write-out "%{http_code}" $TESTURL) if [ $RESULT == 302 ]; then # Wenn $RESULT = 302 ist, dann wurde von DSLonAir ein Redirect zur Anmeldeseite gesendet (http_code=302) # und es muss ein Login durchgeführt werden # temp File für Cookie erzeugen TMPCOOKIE=$(mktemp -t cookie.XXXXXX) # Die effective URL der Loginseite ermitteln (weil dynamisch) und Cookie speichern LOGINURL=$(curl --silent --cookie-jar $TMPCOOKIE --location --output /dev/null \ --write-out "%{url_effective}" $TESTURL) # Die ermittelte URL einigen Sicherheits- und Plausibilitaetsprüfungen unterziehen # Die Anmeldedaten sollen nur per https and das System dbd.dslonair.de gesendet werden # wir nehmen mal an die LoginURL sei nicht ok LOGINURL_OK=false # ermittel aus der LoginURL die Protokollangabe (http oder https) PROTOCOL=$(echo $LOGINURL | sed -e "s/:\/\/.*//") # ermittel aus der LoginURL den Hostanteil LOGINHOST=$(echo $LOGINURL | sed -e "s/.*:\/\///") LOGINHOST=$(echo $LOGINHOST | sed -e "s/\/.*//") # Wenn Protokoll "https" und Host "dbd.dslonair.de" ist, dann ist es ok if [ $PROTOCOL == "https" -a $LOGINHOST == "dbd.dslonair.de" ]; then LOGINURL_OK=true fi # Wenn die URL Pruefung soweit ok ist, dann die Anmeldung durchduehren if [ $LOGINURL_OK == true ]; then # Loginparameter (User/Password) per HTTP POST zusammen mit dem gespeicherten Cookie # an die ermittelte URL senden RESULT2=$(curl --silent --cookie $TMPCOOKIE --output /dev/null --write-out "%{http_code}" \ --data "__ac_name=$LOGINUSR" --data "__ac_password=$LOGINPWD" $LOGINURL) # http-Returncode des Anmeldevorgangs pruefen if [ $RESULT2 != 200 ]; then # http-code != 200 heisst grob gesehen "nicht in Ordnung" echo "$(date): Logonfehler! http_code = $RESULT2; URL = $LOGINURL" >>$LOGFILE else # http-code = 200 heisst grob gesehen "in Ordnung" echo "$(date): Logon erfolgreich! http_code = $RESULT2; URL = $LOGINURL" >>$LOGFILE fi else # Login URL ist nicht korrekt gewesen echo "$(date): Fehler! URL = $LOGINURL" >>$LOGFILE fi rm $TMPCOOKIE elif [ $RESULT != 200 ]; then echo "$(date): unbekannter Fehler bei Online-Test! http_code = $RESULT" >>$LOGFILE #else # echo "$(date): Online-Test ok! http_code = $RESULT" >>$LOGFILE fi # End of Script