如果在 /newchanes.list 中发现任何更改,是否有办法添加一个命令来邮寄此邮件。带有附件 (/changes) 的邮件表明发现了更改,如果没有,则主题行会显示:未做出任何更改。
#!/bin/bash
if [ ! -f "/suid.old" ]; then # note: !
find / -perm -4000 -o -perm -2000 -ls > /suid.old # note: dash before ls; slash before file
else
find / -perm 4000 -o -perm -2000 -ls > /suid.new
diff /suid.old /suid.new > /newchanges.list
mv /suid.new /suid.old # could be handy
fi
答案1
你可以做类似的事情:
...
diff /suid.old /suid.new > /newchanges.list
if [ $? -eq 0 ]
then
mail -s "No changed made" <[email protected]>
else
mail -s "Changes Found" <[email protected]> < /newchanges.list
fi
...
如果没有发现更改,diff 将以退出代码 0 退出(至少在我的 ubuntu 机器上,您应该在自己的系统上验证退出代码)。
答案2
您可以在测试中使用 -s 开关来查看生成的文件是否为空,如果不是,则发送电子邮件。不过这种方法可能有一个警告...
-s FILE
FILE exists and has a size greater than zero