Linix Script/Bash wget

Havoc2k3

Ensign
Registriert
Sep. 2015
Beiträge
189
Hallo liebe Leser,

ich bin auf der Such nach einem passenden Script oder allumfassenden Befehl für unsere "wget" ftp Übertragungen.

Die Situation, wir übertragen täglich vielen Daten via SSH von div. Quellservern auf eine unserer Maschinen und lassen natürlich nebenbei vom Befehl wget ein LOG ausgeben.
Nun möchte ich das sobald im LOG die Meldung "Abgeschlossen" kommt ich eine Meldung in Form einer Mail bekomme.

Das wget Command
Code:
wget -m -o log -t 25 --user=USERNAME --password='PASSWORD' ftp://SERVER/Quellverzeichnis/

Das LOG live auslesen
Code:
watch tail /var/www/zielverzeichnis/log

E-Mail versenden
Code:
echo "Der FTP Prozess ist abgeschlossen" | mail -s"wget_ist_fertig" info@mich.de

Ich suche einen Weg das ganze miteinander zuverküpfen sei es druch pipen oder && oder druch ein script welches ich gleichzeitig mit dem Start wget ansprechen möchte.

Natürlich ist das ganze nur "Quality of Life" :)
 
Mach doch einfach ein Script was wget ausführt, prüft ob der wget Befehl erfolgreich war und dann die entsprechende Mail verschickt.
 
  • Gefällt mir
Reaktionen: rocketworm
wget && (echo "erfolg" | mail) || (echo "fehler" | mail)
 
Edit: gelöscht.
 
Den returncode von wget auszuwerten ist sicherlich die einfachste Variante. Falls du unbedingt die Logausgabe überwachen möchtest/musst:

Damit habe ich ein Log nach dem Vorkommen von "java.lang.OutOfMemoryError: Java heap space" überwacht und beim Auftreten ein paar spannende Sachen gemacht. Das könntest du sicherlich benutzen, müsstest nur aus der Schleife raus... bei mir lief das durchgehend.

In der Variablen WATCHME steht der Pfad zur Logdatei, die überwacht werden soll.

Code:
while read LINE;
do
   case "${LINE}" in
      [I]"java.lang.OutOfMemoryError: Java heap space"[/I] )
         write_log "ERROR: ${LINE}"
         # some more logic here #
      ;;
   esac
done < <(tail -F ${WATCHME})

Die "I-Tags" bitte durch "*" ersetzen. Bekomme das nicht hin ^^
 
Zuletzt bearbeitet:
Bash:
#!/bin/bash

wget -m -o log -t 25 --user=USERNAME --password='PASSWORD' ftp://SERVER/Quellverzeichnis/

if [ $? = 0 ]
then
echo "Der FTP Prozess wurde ERFOLGREICH abgeschlossen" | mail -s"wget_ist_fertig" info@mich.de
else
echo "Der FTP Prozess wurde MIT FEHLERN abgeschlossen" | mail -s"wget_ist_fertig" info@mich.de
fi
Ergänzung ()

So noch etwas zur Erklärung dazu. Mit der Umgebungsvariable $? kannst du in der BASH abfragen mit welchen Fehlercode der letzte Befehl ausgeführt wurde. Wird der Fehlercode 0 zurückgegeben, bedeutet dieses dass alles ok ist.
Wenn ich nun in einem BASH Script direkt nach dem wget abfrage ob $? = 0 ist, kann man da entsprechend drauf reagieren.
 
Zuletzt bearbeitet:
Zurück
Oben