inotify + msmtp + mutt 监控文件变化并发送邮件的配置实例
(一)inotify
inotify 它是一个内核级 用于通知用户文件系统变化的机制。 它监控文件系统操作,比如读、写和创建、修改、删除等等。inotify 反应灵敏,用法简单、高效。
inotify支持 2.6.13 或更新内核的 Linux 系统。
inotify-tools 是为linux下inotify文件监控工具提供的一套c的开发接口库函数。inotify-tools提供两种工具,
1. inotifywatch: 它用来统计文件系统访问的次数
2. 另一就是inotifywait,现在是用它来监控文件或目录的变化。
msmtp 是一个SMTP 客户端程序,它可把邮件送给SMTP服务器。
#yum install inotify-tools
#/usr/local/inotify/bin/inotifywait-mr /home
16/11/1016:51 /home/www/house/house/images DELETE,ISDIR
16/11/1016:51 /home/www/house/house/index.shtml DELETE
16/11/1016:51 /home/www/house/house/index.shtml.bak DELETE
16/11/1016:51 /home/www/house/house DELETE,ISDIR
16/11/1016:51 /home/www/house/index.shtml DELETE
参数:
-m, –monitor
接收到一个事情而不退出,无限期地执行。默认的行为是接收到一个事情后立即退出。
-r, –recursive
监视一个目录下的所有子目录。
-e , –event
指定监视的事件。不加参数-e的话,默认就是监控所有的事件
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
inotifywait 监控脚本,将变化事件写入文件。
vi inotify-to-file.sh
#!/bin/sh
srcdir=/home/www/
FlagFile=/usr/local/inotify/log/msgflag.log
toemail="wangwang@126.com"
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%y/%m/%d %H:%M' --format '%T %w%f %e' -edelete,create,attrib,move$srcdir | while read file
do
echo "${file} " >>/usr/local/inotify/log/rsync.log 2>&1
echo "${file} " >>/usr/local/inotify/log/msg.log2>&1
cat $FlagFile | while read LINE
do
echo $LINE
if [ "$LINE"x !="1"x ]; then
echo "1"> $FlagFile
fi
done
done
(二)msmtp
msmtp 是一个SMTP 协议的客户端程序,它可把邮件送给SMTP 邮件服务器。
这里我使用它来发邮件。
安装:
yum install openssl-devel
tar -xvf msmtp-1.6.5.tar.xz
./configure --prefix=/usr/local/msmtp --with-ssl=openssl
make
make install
|
TLS和SSL可简单理解为并列的关系。 TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。TLS建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。TLS的1.0版本对应SSLv3.1版本。 |
msmtprc 配置文件内容:
vi /usr/local/msmtp/etc/msmtprc
defaults
auth on //指定帐号认证模式
tls on // 启用或禁用TLS /SSL加密。
tls_starttls off //禁用TLS加密的starttls链接方式
tls_trust_file /etc/ssl/certs/ca-bundle.crt //ssl 证书位置
account freemail
host smtp.qq.com //邮件smtp服务器
port 465
from 87654321@qq.com
user 87654321@qq.com
password eeeevzcdnksdcccc
logfile /usr/local/msmtp/log/msmtp.log
account default:freemail
测试:echo "a test mail." | msmtp --debug --file=./.msmtprc wangwanghan@126.com
注:
--debug 调试模式,会显示与SMTP服务器的交互过程。
(三)mutt
mutt是一个邮件命令行程序,我通过它将邮件发出去。
配置文件:
vi /root/.muttrc
setcharset=”utf-8”
set sendmail="/usr/local/msmtp/bin/msmtp" //msmtp的安装位置
set use_from=yes
set from=87654321@qq.com //使用的邮箱
set envelope_from=yes //设置从上面邮箱发信
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
vi file-to-email.sh #设置crond计划任务,每2分钟执行一次。对inotify监控写入的文件内容使用QQ邮箱发送出去。
#!/bin/sh
FlagFile=/usr/local/inotify/log/msgflag.log
MsgFile=/usr/local/inotify/log/msg.log
toemail=”wangwang@126.com” # 接收的邮箱
CCAddress="233332441@qq.com,4121881541@qq.com,27564190021@qq.com" #抄送的邮箱
cat $FlagFile | while read LINE
do
echo $LINE
if[ "$LINE"x = "1"x ]; then #标识等于1有消息要通过email发送
cat $MsgFile|/usr/bin/mutt -s "邮件标题inotify测试" –c $CCAddress $toemail
if [ $? -eq 0];then
echo"" >$MsgFile
echo"" >$FlagFile
fi
fi
done
这篇博客介绍了如何利用inotify监控文件系统变化,结合msmtp和mutt实现邮件通知。首先,详细解释了inotify的工作原理和相关工具的用法。接着,配置msmtp作为SMTP客户端,连接QQ邮箱进行邮件发送,并展示了msmtprc配置文件的内容。最后,介绍了mutt的配置,通过mutt将邮件发送出去。整个流程覆盖了文件监控、邮件发送和命令行邮件客户端的使用。
1124

被折叠的 条评论
为什么被折叠?



