30 Oct, 2025 - 04:37 PMDeutsch | English
Hola invitado [ Register | Entrar ]

Publicar nuevo tema   Responder al tema
Ver tema anterior Versión imprimible Entre para ver sus mensajes privados Ver tema siguiente
Autor Mensaje
Andreas
Asunto: mit date rechnen *help*  MensajePublicado: 21 Jun, 2006 - 01:55 PM



Registrado: 04 Feb, 2004
Mensajes: 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)

Código:

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
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
acritox
Asunto: mit date rechnen *help*  MensajePublicado: 22 Jun, 2006 - 08:51 PM
Developer
Developer


Registrado: 10 Jul, 2004
Mensajes: 290
Ubicación: Bayern (München & Rottenburg)
Hi Andreas,

Código:
#!/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:

Código:
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
 
 Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor Número ICQ 
Responder citando Volver arriba
Andreas
Asunto: RE: mit date rechnen *help*  MensajePublicado: 24 Jun, 2006 - 05:34 PM



Registrado: 04 Feb, 2004
Mensajes: 92

danke, werds gleich mal ausprobieren, bzw. erstmal versuchen zu verstehen was da abläuft Winken
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
Andreas
Asunto: RE: mit date rechnen *help*  MensajePublicado: 25 Jun, 2006 - 05:54 PM



Registrado: 04 Feb, 2004
Mensajes: 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
Código:

#!/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
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
Mostrar mensajes anteriores:     
Cambiar a:  
Todas las horas son GMT + 1 Hora
Publicar nuevo tema   Responder al tema
Ver tema anterior Versión imprimible Entre para ver sus mensajes privados Ver tema siguiente
Powered by PNphpBB2 © 2003-2007 The PNphpBB Group
Créditos
 
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.