Linux ShellScript Frage
Ferby
- linux
0 Robert B.0 Regina Schlaukrug0 Ferby
Liebe User,
ich muss ein kleines ShellScript für Ubuntu schreiben und kenne mich leider damit nicht sehr gut aus.
Folgende Anforderung: Wenn in einem bestimmten Ordner die letzte Änderung an irgendeiner Datei länger als 10 Minuten zurück liegt soll ein E-Mail verschickt werden.
Soweit bin ich:
1: #!/bin/bash
2: log_path="/home/abc/Desktop/prog/log_dir"
3: find $log_path -exec stat \{} --printf="%y\n" \; | sort -n -r | head -n 1
4: DATE=`date +%Y.%m.%d-%H:%M:%S`
5: # IF CONDITION ???
6: echo "$DATE: LOG OF PROG DID NOT CHANGE IN THE LAST 10 MINUTES" | mail -s "PANIC E-MAIL" eine@mail.adresse
Zeile 3 liefert das letzte Änderungsdatum
Zeile 4 liefert das aktuelle Datum
Was mir jetzt fehlt ist die IF-Condition. Also ich möchte in Zeile 5 das letzte Änderungsdatum aus Zeile 3 mit dem aktuellen Datum aus Zeile 4 vergleichen. Wenn hier mehr als 10 Minuten unterschied sind, soll Zeile 6 ausgeführt werden.
Ich habe leider keinen Ahnung wie ich hier ran gehen soll, finde auch keine Beispiele in Google. Kann mir wer weiterhelfen, einen Tipp geben?
Hallo Ferby,
Folgende Anforderung: Wenn in einem bestimmten Ordner die letzte Änderung an irgendeiner Datei länger als 10 Minuten zurück liegt soll ein E-Mail verschickt werden.
find kann dir direkt die passenden Dateien heraussuchen, siehe man find
im Terminal.
Viele Grüße
Robert
Wenn in einem bestimmten Ordner die letzte Änderung an irgendeiner Datei länger als 10 Minuten zurück liegt soll ein E-Mail verschickt werden.
#!/bin/bash
log_path="/home/abc/Desktop/prog/log_dir"
if [ ! "$(find $log_path -mmin -10)" ]; then
echo "$(date): LOG OF PROG DID NOT CHANGE IN THE LAST 10 MINUTES" | mail -s "PANIC E-MAIL" eine@mail.adresse
fi
Moin,
- Die find-Option -mmin sucht Objekte, die vor mindestens bzw. längstens x Minuten geändert wurden (je nachdem, ob x positiv oder negativ ist).
Wenn sogar nur eine Datei jeweils betroffen ist, dann kann find auch gleich das „if“ übernehmen: Mit dem Parameter -exec
wird für jede gefundene Datei der angegebene Befehl ausgeführt.
Viele Grüße
Robert
Danke für eure Hilfe, meine finale Lösung:
#!/bin/bash
log_path="/home/bla/Desktop/bla/log_dir/"
if [ ! "$(find $log_path -mmin -10)" ]; then
echo "LOG OF bla DID NOT CHANGE" | mail -s "PANIC E-MAIL bla" "bla@bla.eu"
fi