2017-01-06 5 views
0

Erstanwender hier.Benötigt wget zum Schreiben in 2 Dateien

  • Linux Spike 4.4.36-Server-2.mga5 # 1 SMP Di 6. Dezember 17.32.56 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

  • GNU Wget 1.15 gebaut auf Linux-Gnu

  • GNU bash, Version 4.3.48 (1) -release (x86_64-mageia-linux-gnu)

ich einen cron-Job habe, die wget eine Datei herunterzuladen, verwendet. Einfache Arbeit. Ich möchte die Bestätigung dieses Jobs in meiner E-Mail sehen. Ich bin teilweise erfolgreich darin gewesen, dies zum Laufen zu bringen, aber die E-Mail erscheint mit der Ausgabe von Cron und nicht mit den wget-Protokollinformationen. Hier ist ein Beispiel.

Der Cron-Job:

/usr/local/bin/update_clouds.sh ; /usr/bin/mail -s "Attempted Cloud Update" -r [email protected] [email protected] < /usr/share/xplanet/logs/update_clouds.txt 

Das Shell-Skript (update_clouds.sh) dieses Cron-Job initialisiert tut dies:

wget --user=<usr> --password=<passwd> -O /usr/share/xplanet/images/clouds.jpg http://xplanetclouds.com/clouds/2048/clouds_2048.jpg -a /usr/share/xplanet/logs/clouds.log 

das funktioniert, aber meine E-Mail trägt die gesamte wget log (/usr/share/xplanet/logs/clouds.log) im Körper. Ich möchte nur die letzte Transaktion in dieser E-Mail angezeigt werden.

Anfangs dachte ich, ich könnte beide Protokolloptionen von wget verwenden, -o und -a. Ich könnte an das Systemprotokoll anhängen und die Datei, die ich möchte, in den Text meiner E-Mail überschreiben, aber das funktioniert nicht. Wget verwendet nur die letzte Option in der Befehlszeile, nicht beide.

Ich habe eine Lösung, in der ich nur willkürlich die letzten 30 Zeilen aus wget's Log gezogen und das geschickt. Es hat funktioniert, aber es ist ineffizient und hässlich. Es sieht so aus:

/usr/local/bin/update_clouds.sh ; tail -30 /usr/share/xplanet/logs/clouds.log > /usr/share/xplanet/logs/update_clouds.txt ; /usr/bin/mail -s "Attempted Cloud Update" -r [email protected] [email protected] < /usr/share/xplanet/logs/update_clouds.txt 

Ich versuchte mit "tee", aber das funktioniert auch nicht. Es scheint, als ob Tee nichts passiert und eine leere Datei erzeugt. Ich bekomme die E-Mail, aber da ist nichts im Körper. Ich habe noch nie zuvor Tee benutzt und bin mir nicht sicher, ob ich es verstanden habe.

Wenn Sie so weit gelesen haben, haben Sie vielleicht bemerkt, dass es viele Möglichkeiten gibt, diese Katze zu häuten. Meine Präferenz ist wget Download der Datei und analysieren Sie die Protokolldatei, und dann cron, um nur den Befehl auszuführen und senden Sie die E-Mail.

Wenn Sie denken, dass meine Herangehensweise falsch ist, lassen Sie es mich bitte wissen, wenn es eine einfachere, funktionellere und ökonomischere Art gibt, dies zu tun, bin ich bereit, es zu betrachten.

Jede Hilfe wird geschätzt.

Mark

Antwort

0

ich meine eigene Frage nach ein paar Stunden von Versuch und Irrtum zu beantworten.

Was ich tat, war:

  1. nativen Protokolldatei-Funktion des Abandon wget. Dies führte zu einer Out-of-Output-Ausgabe.

  2. Umgeleitete Standardfehler und Standardausgabe in eine Textdatei, die an meinen Admin-Benutzer gesendet werden soll.

  3. In derselben Zeile habe ich den Befehl hinzugefügt, um den Inhalt der zu sendenden Textdatei an die Protokolldatei für update_clouds anzuhängen.

  4. Konfiguriert den Cron-Job, um nur das Skript auszuführen und mir eine E-Mail.

Der Befehl in der Shell-Skript sieht wie folgt aus:

wget --user=xxxxxx --password=xxxxxxxxxx -O /usr/share/xplanet/images/clouds.jpg http://xplanetclouds.com/clouds/2048/clouds_2048.jpg 2> /usr/share/xplanet/logs/update_clouds.txt ; cat /usr/share/xplanet/logs/update_clouds.txt >> usr/share/xplanet/logs/clouds.log 

Der Cron-Job ist dies:

/usr/local/bin/update_clouds.sh ; /usr/bin/mail -s "Updated Clouds" -r "Shuttle Cron<[email protected]>" [email protected] < /usr/share/xplanet/logs/update_clouds.txt ; 

Es tut mir Leid unnötig die Gemeinschaft angerempelt zu haben. Ich schätze die Gelegenheit, etwas Hilfe mit diesem Zeug zu bekommen. Ich bin nur ein Teilzeit-Bastler und ich mache diese Dinge zu lernen. Habe heute sicher einiges gelernt.

Mark

Verwandte Themen