示范(或直接真正的问题部分)
我有一个 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
它也运行完美,发送电子邮件,但我收到了一封额外的电子邮件计划任务守护进程有 3 个警告输出,如下所示:
真正的问题在这里:
我的问题是,基于3从上图中的警告消息,我收到了 cron 守护程序电子邮件警告。我该如何压制第二行警告并保留 Cron 守护程序发送的其余输出?
输出的第二行是:
# 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'
答案1
grep
不起作用的原因是消息将要发送stderr
,而不是发送stdout
,所以grep
永远不会看到它们。这就是为什么即使在发送stdout
至后您仍会收到一封电子邮件/dev/null
。你可以stderr
这样过滤:
somecommand > /dev/null 2>( grep -v 'unwanted error' 1>&2 )