24.11.2014, 07:17 UhrDeutsch | English
Hallo Gast [ Registrierung | Anmelden ]

Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
Autor Nachricht
Andreas
Titel: mit date rechnen *help*  BeitragVerfasst am: 21.06.2006, 13:55 Uhr



Anmeldung: 04. Feb 2004
Beiträge: 92

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
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
acritox
Titel: mit date rechnen *help*  BeitragVerfasst am: 22.06.2006, 20:51 Uhr
Developer
Developer


Anmeldung: 10. Jul 2004
Beiträge: 288
Wohnort: Bayern (München & Rottenburg)
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 )

_________________
http://kanotix.acritox.com/factoids - http://kanotix.acritox.com - http://acritox.de/repository - http://andreas-loibl.de - GPG: F781E713
 
 Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen ICQ-Nummer 
Antworten mit Zitat Nach oben
Andreas
Titel: RE: mit date rechnen *help*  BeitragVerfasst am: 24.06.2006, 17:34 Uhr



Anmeldung: 04. Feb 2004
Beiträge: 92

danke, werds gleich mal ausprobieren, bzw. erstmal versuchen zu verstehen was da abläuft Winken
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Andreas
Titel: RE: mit date rechnen *help*  BeitragVerfasst am: 25.06.2006, 17:54 Uhr



Anmeldung: 04. Feb 2004
Beiträge: 92

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
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Beiträge vom vorherigen Thema anzeigen:     
Gehe zu:  
Alle Zeiten sind GMT + 1 Stunde
Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
PNphpBB2 © 2003-2007 
 
Deutsch | English
Logos and trademarks are the property of their respective owners, comments are property of their posters, the rest is © 2004 - 2006 by Jörg Schirottke (Kano).
Consult Impressum and Legal Terms for details. Kanotix is Free Software released under the GNU/GPL license.
This CMS is powered by PostNuke, all themes used at this site are released under the GNU/GPL license. designed and hosted by w3you. Our web server is running on Kanotix64-2006.