#!/bin/bash # Dieses Script versucht bei jedem Aufruf, die aktuelle taz herunterzuladen. # So sehen die Adressen aus: http://www.taz.de/taz/abo/get.php?f=2011_07_11_HTM.zip # Diese Version ist speziell an meine Linux-Umgebung angepasst und warnt per E-Mail und # per Datei auf dem Desktop, wenn es Probleme gibt. # Wechsel in das Ziel-Verzeichnis cd /daten/download/taz # Wget reads its username and password from this file; Format: # http-user = 123456 # http-password = geheim export WGETRC="/home/vlado/docs/scripte/taz-download-wgetrc" # Damit das Script unabhaengig von den lokalen Einstellungen ist: export TZ="Europe/Berlin" export LANG=C # In diese Datei wird später das "Datum" (Sekunden seit 01.01.1970) eingetragen TIMESTAMP_FILE=last_download.txt; # Datum, wird beim Einlesen von TIMESTAMP_FILE überschrieben: LASTDOWNLOAD=1210749819 # In der Datei steht z.B. "LASTDOWNLOAD=1204350489" (Sa 1 Mär 2008 06:48:09 CET) # Mit dem source-Befehl wird also die LASTDOWNLOAD-Variable gesetzt source $TIMESTAMP_FILE; # Test, ob das Verzeichnis schreibbar ist (wenn nicht Wechsel) if !(touch $TIMESTAMP_FILE); then mkdir ~/taz; cd ~/taz; source $TIMESTAMP_FILE; fi; # ZEIT wird das aktuelle Datum (in Sekunden seit 01.01.1970) ZEIT=$(date +%s); # Das aktuelle Datum ist beim nächsten Aufruf das Datum des letzten Herunterladens echo "LASTDOWNLOAD=$ZEIT" > $TIMESTAMP_FILE; # Hier wird die vergangene Zeit (in Sekunden) seit dem letzten Herunterladen berechnet let TIME_DIFFERENCE=$ZEIT-$LASTDOWNLOAD; # "Today's second": die wievielte Sekunde des Tages jetzt ist: let TODAYS_SECOND="($(date +%k) * 60 + 10#$(date +%M)) * 60 + 10#$(date +%S)"; # 86400 = 24 * 60 * 60 (Sekunden eines ganzen Tages) / eigentlich _vorletzte_ Mitternacht let SECONDS_SINCE_LAST_MIDNIGHT="86400 + $TODAYS_SECOND"; # echo "Sekunden seit letztem Aufruf: $TIME_DIFFERENCE"; # Was the last call before yesterday? # Ist die vergangene Zeit größer als der Zeitunterschied bis zur vorletzten Mitternacht? if [ $TIME_DIFFERENCE -gt $SECONDS_SINCE_LAST_MIDNIGHT ] then # Ja, der Unterschied ist größer, also warnen. / Berechne Zeitunterschied in Stunden let HOURS_OFF="$TIME_DIFFERENCE / 3600"; DATUM=$(date); echo "Rechner war heute und gestern nicht an, war $HOURS_OFF Stunden aus! taz-Ausgabe könnte fehlen!" | mail -s "taz-Herunterladeproblem" vlado; echo "$DATUM: Rechner war heute und gestern nicht an, war $HOURS_OFF Stunden aus! taz-Ausgabe könnte fehlen!" >> /home/vlado/Desktop/warnung.txt fi; # Warnung oder nicht, ein Herunterladen wird versucht (außer am Sonntag) # There is no taz on Sundays if [ "Sun" != "$(date +%a)" ] then FILE=$(date +"%Y_%m_%d")_HTM.zip; # Natürlich wird das Herunterladen nur versucht, wenn die Datei nicht schon vorhanden ist if [ -f $FILE ] then echo "Datei ""$FILE"" ist schon vorhanden!"; else # Zunächst auskommentiert eine Zeile, die ich zur Fehlersuche verwendete # echo "Versuche $FILE herunterzuladen..."; # Das eigentliche Herunterladen passiert mit wget wget --quiet -c "http://www.taz.de/taz/abo/get.php?f=""$FILE""" -O $FILE; # Falls wget nicht erfolgreich beendet wird, wird eine Fehlermeldung ausgegeben if [ "$?" -ne "0" ] then echo "Fehler beim taz-Herunterladen!" | mail -s "taz-Herunterladeproblem" vlado; echo "Fehler beim taz-Herunterladen!\n" >> /home/vlado/Desktop/warnung.txt; fi; fi; fi; cd ~