Ich habe einen Cron-Job von root jede Stunde, die überprüft, ob es eine Stolperdrahtverletzung ist. Es sendet mir immer noch stündlich eine E-Mail, ob ich einen Verstoß habe oder nicht. Wenn ein Verstoß vorliegt, enthält er den Bericht. Wenn es keine Verletzung gibt, sendet es mir eine leere E-Mail mit nur der Betreffzeile.Bash-Skript sendet E-Mail auch wenn es nicht sollte
Hier ist das Skript:
#!/bin/bash
# Save report
tripwire --check > /tmp/twreport
# Count violations
v=`grep -c 'Total violations found: 0' /tmp/twreport`
# Send report
if [ "$v" -eq 0 ]; then
mail -s "[tripwire] Report for `uname -n`" [email protected] < /tmp/twreport
fi
Wenn es eine leere E-Mail sendet, scheint dies anzuzeigen, dass '/ tmp/twreport' leer ist. Das würde sicherlich dazu führen, dass "v" auf Null gesetzt wird. Schlage vor, dass Sie debuggen, was tatsächlich in diese Datei geschrieben wird. – paxdiablo
Die Datei wird geschrieben - sie zeigt entweder 0 Verletzungen oder x Anzahl der Verstöße an. Das v ist entweder 0 oder 1. Wenn ich es manuell ausführe funktioniert es gut, nur in Cron funktioniert es nicht. – MarkH
Es gibt einen großen Unterschied in der Umgebung zwischen Terminals und Cron-Jobs, so dass hier das Problem auftreten kann. Siehe zum Beispiel http://stackoverflow.com/questions/1972690/cannot-get-php-cron-script-to-run/1972763#1972763 – paxdiablo