staging.inyokaproject.org

Zeitstempel anhängen

Status: Gelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

yungmagnum

Anmeldungsdatum:
13. Mai 2019

Beiträge: 11

Hallo Linux-Gemeinde, ich möchte mir mit folgendem Befehl

1
curl wttr.in/Hamburg?0 | grep 'mm' | cut -f 15-21 | cut -c 1-4 > hh.txt

die Regenmenge ausgeben lassen, diese in eine txt-Datei schreiben und dahinter noch einen Zeitstempel mit Datum + Uhrzeit anhängen. cp wäre vermutlich der passende Befehl oder? Über Hilfe und Vorschläge wäre ich sehr dankbar! Glück auf!

Bearbeitet von ChickenLipsRfun2eat:

Bitte verwende in Zukunft Codeblöcke, um die Übersicht im Forum zu verbessern!

ChickenLipsRfun2eat Team-Icon

Supporter
Avatar von ChickenLipsRfun2eat

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12070

Hallo!

Möchtest du (fortlaufend) das Datum in die Datei schreiben, oder möchtest du den Dateinamen mit Datum versehen?

In beiden Fällen wäre date dein Freund:

1
date +"Monat %B, %A, der %e.%m.%Y (Uhrzeit:%T)"

yungmagnum

(Themenstarter)

Anmeldungsdatum:
13. Mai 2019

Beiträge: 11

Ich möchte das Ganze in ein Skript packen und dann via cronjob alle 5 Minuten die Informationen von der Seite abrufen lassen. Bei jedem „Zugriff“ soll die neue Millimeter-Zahl mit Datum und Uhrzeit in die txt-Datei geschrieben werden, unter die vorherige Millimeter-Zahl natürlich.

steamywindows

Avatar von steamywindows

Anmeldungsdatum:
5. Mai 2018

Beiträge: Zähle...

Vielleicht so in der Art:

1
echo $(curl wttr.in/Hamburg?0 | awk '{ print $5 }' | tail -1) mm - $(date +'%d.%m.%Y') - $(date +'%H:%M')>> hh.txt

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 12527

steamywindows schrieb:

Vielleicht so in der Art:

1
echo $(curl wttr.in/Hamburg?0 | awk '{ print $5 }' | tail -1) mm - $(date +'%d.%m.%Y') - $(date +'%H:%M')>> hh.txt

Den tail kann der awk mit erledigen und ein date ist da zu viel:

1
2
$ echo "$(curl -s wttr.in/Hamburg?0 | awk '/mm/ {print $5}')mm $(date +'%Y-%m-%d - %H:%M')"
0.7mm 2019-05-23 - 23:09

oder auch so

1
2
$ curl -s wttr.in/Hamburg?0 | awk "-vts=$(date +'%Y-%m-%d - %H:%M')" '/mm/ {print $5 "mm " ts}'
0.7mm 2019-05-23 - 23:11

steamywindows

Avatar von steamywindows

Anmeldungsdatum:
5. Mai 2018

Beiträge: 27

@rklm

Das ist ohne Frage eleganter und effizienter gelöst!

$ curl -s wttr.in/Hamburg?0 | awk "-vts=$(date +'%Y-%m-%d - %H:%M')" '/mm/ {print $5 "mm " ts}'

Ich bin mit meinem Kenntnisstand immer froh, wenn etwas funktioniert. Mit Eleganz und Effizienz kämpfe ich noch 😉

Danke für den Hinweis auf den überflüssigen tail - das war mir noch nicht bekannt.

Ein Hinweis für den TS: eine Umlenkung mit > am Ende wird stets dazu führen, dass die Datei (hier: hh.txt) immer aufs neue überschrieben wird. mit >> am Ende wird die Ausgabe der Kommandozeile an diese Datei angefügt.

yungmagnum

(Themenstarter)

Anmeldungsdatum:
13. Mai 2019

Beiträge: 11

Vielen Dank für die sehr sehr hilfreichen Antworten. Ich habe das Kommando nun in ein Skript gepackt, mit Ausführungsrechten ausgestattet und bereits ausgeführt, was wunderbar funktionierte. Nun möchte ich das Skript jedoch mit crontab alle 5 Minuten laufen lassen, bisher habe ich noch nicht mit crontab gearbeitet. Ich habe mit

1
crontab -e

folgenden Befehl eingegeben:

1
5 * * * * /home/hamburgwetter.sh

Oder müsste es

1
*/5 * * * * /home/hamburgwetter.sh

heißen?

Tut mir leid, falls der Ansatz sehr dumm ist, aber ich beschäftige mich erst seit ein paar Wochen mit Linux. Vielen Dank!

steamywindows

Avatar von steamywindows

Anmeldungsdatum:
5. Mai 2018

Beiträge: 27

Der zweite Ansatz wäre goldrichtig:

1
*/5 * * * * /home/hamburgwetter.sh

yungmagnum

(Themenstarter)

Anmeldungsdatum:
13. Mai 2019

Beiträge: 11

Hm, dann scheint etwas anderes nicht zu stimmen. Habe es genauso eingerichtet wie oben beschrieben, dennoch werden keine neuen Einträge in die txt-Datei geschrieben... ☹

steamywindows

Avatar von steamywindows

Anmeldungsdatum:
5. Mai 2018

Beiträge: 27

Ja, dann stimmt etwas anderes nicht.

Ich habe mal die Zeile von rklm genommen und in ein Skript gepackt (in /tmp/test.sh):

1
2
3
#!/bin/bash

curl -s wttr.in/Hamburg?0 | awk "-vts=$(date +'%Y-%m-%d - %H:%M')" '/mm/ {print $5 "mm " ts}' >> /tmp/hh.txt

Das ganze ausführbar gemacht mit:

1
chmod 755 /tmp/test.sh

und letztlich einen Eintrag in meiner crontab angelegt, genau wie Deinen:

*/1 * * * * /tmp/test.sh

Damit erhalte ich eine Datei, in der genau das steht, was Du erhalten wolltest:

cat /tmp/hh.txt 
0.6mm 2019-05-24 - 19:49
0.6mm 2019-05-24 - 19:50
0.6mm 2019-05-24 - 19:51
0.6mm 2019-05-24 - 19:52
0.6mm 2019-05-24 - 19:53
0.6mm 2019-05-24 - 19:54
0.6mm 2019-05-24 - 19:55
0.6mm 2019-05-24 - 19:56

HarryD

Anmeldungsdatum:
14. Juni 2006

Beiträge: 2627

steamywindows schrieb:

Der zweite Ansatz wäre goldrichtig:

1
*/5 * * * * /home/hamburgwetter.sh

In /home/ steht das Skript mit Sicherheit nicht. Wenn dann /home/<username>/hamburgwetter.sh; <username> ersetzen.

yungmagnum

(Themenstarter)

Anmeldungsdatum:
13. Mai 2019

Beiträge: 11

Habe das gestern beschriebene Problem nun gelöst, aber es hat sich leider ein neues ergeben. Ich weiß echt nicht, was ich falsch mache haha. Bei den vorgeschlagenen Kommandos wurde mir in der txt-Datei, aber auch auf der Konsole immer nur

1
mm - 25.05.2019 - 12:37

ausgegeben, weshalb ich das Kommando auf die mir bekannten Befehle angepasst habe, was wunderbar auf der Konsole geklappt hat.

1
echo $(curl wttr.in/Hamburg?0 | grep '*** mm' | cut -f 15-21) - $(date +'%d.%m.%Y - %H:%M')

ergibt folgenden Ausgabe:

1
0.0 mm - 25.05.2019 - 12:29

Sobald ich es jedoch mit dem crontab in die txt-Datei schreiben möchte, sieht die Ausgabe folgendermaßen aus:

1
2
3
4
5
6
7
0.7 mmESC[0m - 25.05.2019 - 12:34
0.7 mmESC[0m - 25.05.2019 - 12:35
0.7 mmESC[0m - 25.05.2019 - 12:36
0.7 mmESC[0m - 25.05.2019 - 12:37
0.7 mmESC[0m - 25.05.2019 - 12:38
0.7 mmESC[0m - 25.05.2019 - 12:39
0.7 mmESC[0m - 25.05.2019 - 12:40

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 12527

Du brauchst vermutlich die curl-Option "--silent".

yungmagnum

(Themenstarter)

Anmeldungsdatum:
13. Mai 2019

Beiträge: 11

1
curl -s

ergibt folgendes:

1
ESC[38;5;111m     ESC[0m 1.0 mmESC[0m - 25.05.2019 - 13:27

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 12527

Ja, die Sonderzeichen sind in der Ausgabe von wttr.in. Dann muss man besser filtern:

1
echo $(curl wttr.in/Hamburg?0 | egrep -o '[0-9]+\.[0-9]+ mm') - $(date +'%d.%m.%Y - %H:%M')
Antworten |