Bash
如何抑制 cron 守護程序發送到電子郵件的特定警告?
展示(或直接進入真正的問題部分)
我有一個 lynis 腳本,用於掃描我的伺服器。這個腳本並不重要,但無論如何這裡是腳本:https ://gitlab.com/sofibox/maxicron/-/blob/master/usr/local/maxicron/lynis/maxinis
該腳本執行完美,並且在通過終端手動執行時不會輸出任何錯誤:
./maxinis manual --cronjob
我還將收到有關掃描的電子郵件
但是,當我在特定時間通過 cronjob 執行此腳本時,如下所示:
06 21 * * * root /usr/local/maxicron/lynis/maxinis cron --cronjob > /dev/null
它也可以完美執行,發送一封電子郵件,但我收到了一封來自Cron Daemon的額外電子郵件,其中包含 3 個警告輸出,如下所示:
真正的問題在這裡:
我的問題是,根據上圖中的3條警告消息,我收到了 cron daemon 電子郵件警告。如何抑制警告的第二行並保留 Cron Daemon 發送的其餘輸出?
輸出的第二行是:
# Warning: iptables-legacy tables present, use iptables-legacy to see them
我嘗試
grep -v
在 crontab 中使用這種方法,但似乎不起作用:06 21 * * * root /usr/local/maxicron/lynis/maxinis cron --cronjob > /dev/null | grep -v '# Warning: iptables-legacy tables present, use iptables-legacy to see them'
不起作用的原因
grep
是消息將發送到stderr
,而不是stdout
,因此grep
永遠不會看到它們。這就是為什麼即使在發送stdout
到/dev/null
. 您可以像這樣過濾stderr
:somecommand > /dev/null 2>( grep -v 'unwanted error' 1>&2 )