如果服务器上的员工文件夹中的文件发生更改,我想向我们公司的人员发送电子邮件通知。
我有一个脚本,可以很好地使用 inotifywait 在每次文件更改时发送电子邮件。
我想做的是在多个文件上传(假设 10 个 jpg 正在上传到某人的员工文件夹中)时仅发送一封电子邮件。
此脚本会在每次文件更改时发送一封电子邮件:
inotifywait --recursive --exclude '.DS_Store' -e create -e moved_to -m /media/server/Staff/christoph |
while read path action file ; do
echo "The file '$file' appeared in directory '$path' via '$action'"
sendEmail -f [email protected] -t [email protected] -s smtpout.secureserver.net:80 -xu [email protected] -xp password \
-u ""The file $file appeared in your directory"" -m ""To view your file go to $path""
done
解决这个问题最明智的方法是什么?让 inotify 等待进一步的输入(比如说 2 分钟)是否有意义?
顺便说一句,我使用 sendemail 来实现此目的,因为 ISP 阻止了端口 25。
我可能会通过将修改通知写入文件来做到这一点(如果我这样做,我可能会使用 SQLite 数据库),然后每隔几分钟运行一个 cron 作业来检查数据库并发送聚合电子邮件。
另一种选择是使用 inotifywait 触发脚本来监视该特定文件,它只会循环检查文件的大小/修改时间,然后休眠一段时间。一旦文件停止增长,脚本就会将文件信息附加到消息文件中。 cron 作业将发送消息文件(如果它不为空),然后截断该文件。这将避免从日志文件读取和写入数据的需要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)