kanotix.com

Scripte - mit date rechnen *help*

Andreas - 21.06.2006, 13:55 Uhr
Titel: mit date rechnen *help*
Ausgangspunkt ist, das ich per skript automatisiert dateien aus dem Internet laden möchte
Die Dateien sind nach Datum und Uhrzeit geordnet ( jede viertelstunde kommt eine Datei hinzu )

Ich möchte auf diese weise angefangen vom aktuellen Datum und aktueller Uhrzeit rückwärts entsprechende Daten herunterladen (z.B. alle files von heute + gestern oder auch die der letzten Woche)

Um mir den sehr umständlichen Weg über das rechnen mit Zeichenketten (und allen außnahmen bei rückwärtszählen) zu ersparen will ich das ganze mit der date funktion lösen

Die Probleme die auftreten
1) Währrend der laufzeit des skriptes läuft die Uhrzeit weiter
2) Ich brauche die Minuten auf eine Viertelstunde gerundet (also 00,15,30 oder 45)

Code:

until (blabla)
Zeit=`date -d -$x"min" +%Y%m%d%H%M`
x=`expr $x + 15`
wget $Server/$Zeit
done

das ist mein erster ansatz dazu
was ich eigentlich brauche ist ein datentyp date mit dem ich genauso rechnen kann wie mit der date funktion, denn ich will natürlich nicht währrend der laufzeit des skriptes die systemzeit ändern und/oder anhalten

hab aber dazu leider nichts gefunden
vielleicht weiß ja jemand von euch weiter Winken
acritox - 22.06.2006, 20:51 Uhr
Titel: mit date rechnen *help*
Hi Andreas,

Code:
#!/bin/sh
timestamp=$(date -d "$(date +%H):$(expr $(date +%M) / 15 \* 15)" +%s)
baseurl="http://127.0.0.1/beispiel"
DEBUG=echo # diese Zeile auskommentieren!

while [ "$timestamp" -gt "$(date +%s -d yesterday)" ]
do
    timestring=$(date -d "1970-01-01 $timestamp seconds UTC" +%Y%m%d%H%M)
    timestamp=$[timestamp-15*60]
    $DEBUG wget $baseurl/$timestring
done


die Ausgabe wär dann in meinem Fall z.B:

Code:
wget http://127.0.0.1/beispiel/200606222145
wget http://127.0.0.1/beispiel/200606222130
wget http://127.0.0.1/beispiel/200606222115
wget http://127.0.0.1/beispiel/200606222100
wget http://127.0.0.1/beispiel/200606222045
wget http://127.0.0.1/beispiel/200606222030
wget http://127.0.0.1/beispiel/200606222015
wget http://127.0.0.1/beispiel/200606222000
wget http://127.0.0.1/beispiel/200606221945
wget http://127.0.0.1/beispiel/200606221930
wget http://127.0.0.1/beispiel/200606221915
wget http://127.0.0.1/beispiel/200606221900
wget http://127.0.0.1/beispiel/200606221845
wget http://127.0.0.1/beispiel/200606221830
wget http://127.0.0.1/beispiel/200606221815
wget http://127.0.0.1/beispiel/200606221800
wget http://127.0.0.1/beispiel/200606221745
wget http://127.0.0.1/beispiel/200606221730
wget http://127.0.0.1/beispiel/200606221715
wget http://127.0.0.1/beispiel/200606221700
wget http://127.0.0.1/beispiel/200606221645
wget http://127.0.0.1/beispiel/200606221630
wget http://127.0.0.1/beispiel/200606221615
wget http://127.0.0.1/beispiel/200606221600
wget http://127.0.0.1/beispiel/200606221545
wget http://127.0.0.1/beispiel/200606221530
wget http://127.0.0.1/beispiel/200606221515
wget http://127.0.0.1/beispiel/200606221500
wget http://127.0.0.1/beispiel/200606221445
wget http://127.0.0.1/beispiel/200606221430
wget http://127.0.0.1/beispiel/200606221415
wget http://127.0.0.1/beispiel/200606221400
wget http://127.0.0.1/beispiel/200606221345
wget http://127.0.0.1/beispiel/200606221330
wget http://127.0.0.1/beispiel/200606221315
wget http://127.0.0.1/beispiel/200606221300
wget http://127.0.0.1/beispiel/200606221245
wget http://127.0.0.1/beispiel/200606221230
wget http://127.0.0.1/beispiel/200606221215
wget http://127.0.0.1/beispiel/200606221200
wget http://127.0.0.1/beispiel/200606221145
wget http://127.0.0.1/beispiel/200606221130
wget http://127.0.0.1/beispiel/200606221115
wget http://127.0.0.1/beispiel/200606221100
wget http://127.0.0.1/beispiel/200606221045
wget http://127.0.0.1/beispiel/200606221030
wget http://127.0.0.1/beispiel/200606221015
wget http://127.0.0.1/beispiel/200606221000
wget http://127.0.0.1/beispiel/200606220945
wget http://127.0.0.1/beispiel/200606220930
wget http://127.0.0.1/beispiel/200606220915
wget http://127.0.0.1/beispiel/200606220900
wget http://127.0.0.1/beispiel/200606220845
wget http://127.0.0.1/beispiel/200606220830
wget http://127.0.0.1/beispiel/200606220815
wget http://127.0.0.1/beispiel/200606220800
wget http://127.0.0.1/beispiel/200606220745
wget http://127.0.0.1/beispiel/200606220730
wget http://127.0.0.1/beispiel/200606220715
wget http://127.0.0.1/beispiel/200606220700
wget http://127.0.0.1/beispiel/200606220645
wget http://127.0.0.1/beispiel/200606220630
wget http://127.0.0.1/beispiel/200606220615
wget http://127.0.0.1/beispiel/200606220600
wget http://127.0.0.1/beispiel/200606220545
wget http://127.0.0.1/beispiel/200606220530
wget http://127.0.0.1/beispiel/200606220515
wget http://127.0.0.1/beispiel/200606220500
wget http://127.0.0.1/beispiel/200606220445
wget http://127.0.0.1/beispiel/200606220430
wget http://127.0.0.1/beispiel/200606220415
wget http://127.0.0.1/beispiel/200606220400
wget http://127.0.0.1/beispiel/200606220345
wget http://127.0.0.1/beispiel/200606220330
wget http://127.0.0.1/beispiel/200606220315
wget http://127.0.0.1/beispiel/200606220300
wget http://127.0.0.1/beispiel/200606220245
wget http://127.0.0.1/beispiel/200606220230
wget http://127.0.0.1/beispiel/200606220215
wget http://127.0.0.1/beispiel/200606220200
wget http://127.0.0.1/beispiel/200606220145
wget http://127.0.0.1/beispiel/200606220130
wget http://127.0.0.1/beispiel/200606220115
wget http://127.0.0.1/beispiel/200606220100
wget http://127.0.0.1/beispiel/200606220045
wget http://127.0.0.1/beispiel/200606220030
wget http://127.0.0.1/beispiel/200606220015
wget http://127.0.0.1/beispiel/200606220000
wget http://127.0.0.1/beispiel/200606212345
wget http://127.0.0.1/beispiel/200606212330
wget http://127.0.0.1/beispiel/200606212315
wget http://127.0.0.1/beispiel/200606212300
wget http://127.0.0.1/beispiel/200606212245
wget http://127.0.0.1/beispiel/200606212230
wget http://127.0.0.1/beispiel/200606212215
wget http://127.0.0.1/beispiel/200606212200


acritox (btw: auch Andreas Winken )
Andreas - 24.06.2006, 17:34 Uhr
Titel: RE: mit date rechnen *help*
danke, werds gleich mal ausprobieren, bzw. erstmal versuchen zu verstehen was da abläuft Winken
Andreas - 25.06.2006, 17:54 Uhr
Titel: RE: mit date rechnen *help*
so, nochmal danke @acritox
hat mich mal mindestens 1h gekostet die paar zeilen code nachzuvollziehen Winken

hier dann auch mal der code meines kleinen skriptes das daraus entstanden ist
Code:

#!/bin/sh
Server="http://www.wetteronline.de/daten/radar/dwddg"
timestamp=$(date -d "$(date +%H):$(expr $(date +%M) / 15 \* 15)" +%s)
timestamp=$[timestamp - 2*3600]
Tempdir=Temp_$(date +%s)
mkdir $Tempdir
echo -n "Wieviele Tage sollen geholt werden: "
read AnzTage
#DEBUG=echo
while [ "$AnzTage" -gt "0" ]
do
   timestamp=$[timestamp-15*60]
   timestring=$(date -d "1970-01-01 $timestamp seconds UTC" +%Y/%m/%d/%H%M)
   MESZ=$(date -d "1970-01-01 `expr $timestamp + 7200` seconds UTC" +%H%M%d%m%Y)
   Datum=$(date -d "1970-01-01 `expr $timestamp + 7200` seconds UTC" +%d%m%Y)
if [ -f ./$Datum.gif ]
then
   echo -e -n "$Server"/"$Datum".gif____"\t"OK"\t"Datei schon vorhanden"\r"
   echo
   timestamp=$[ timestamp-$[(timestamp + 4*3600) % 86400] ]
   $DEBUG rm -f $Tempdir/*.gif
   AnzTage=$[AnzTage-1]
   continue
fi
   $DEBUG wget -q -U firefox -O $Tempdir/$MESZ.gif $Server/$timestring.gif
   echo -e -n "$Server"/"$MESZ".gif"\r"
if test $[(timestamp + 4*3600) % 86400] = "0"
then
   $DEBUG gifsicle --delay 10 $Tempdir/*.gif  > $Datum.gif
   $DEBUG rm -f $Tempdir/*.gif
   AnzTage=$[AnzTage-1]
   echo -e -n "$Server"/"$Datum".gif____"\t"OK"\r"
   echo
fi
done
rmdir $Tempdir
$DEBUG konqueror $Datum.gif


Das skript erzeugt mit hilfe des paketes gifsicle animated gifs der letzten x-Tage auf denen dank wetteronline der Niederschlag über Deutschland zu sehen ist
War als kleine Programmierübung für mich gedacht und ich bin sehr zufrieden mit dem Ergebnis
Bin natürlich für anregungen und verbesserungsvorschläge offen Cool
Alle Zeiten sind GMT + 1 Stunde
PNphpBB2 © 2003-2007