我有一個按root運行的cron作業,每小時檢查一次是否存在tripwire違例。無論我是否違規,它每小時都會發送一封電子郵件給我。如果存在違規行爲,則包括該報告。如果沒有違規行爲,它會向我發送一封空白電子郵件,其中只有主題行。Bash腳本發送電子郵件,即使它不應該
這裏的腳本:
#!/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
如果它發送空白電子郵件,似乎表示'/ tmp/twreport'爲空。這肯定會導致'v'被設置爲零。建議您調試實際寫入該文件的內容。 – paxdiablo
該文件被寫入 - 它顯示0次違規或x次違規。 v是0或1.當我手動運行它時,它工作正常,只有在cron中不起作用。 – MarkH
終端和cron工作之間的環境差異很大,所以這可能是問題。看例如http://stackoverflow.com/questions/1972690/cannot-get-php-cron-script-to-run/1972763#1972763 – paxdiablo