您的位置:首页 > 运维架构 > Linux

linux下实现每天自动发送服务器日志到邮箱(使用sendmail)

2010-12-01 20:13 531 查看
今天做了一个将服务器日志分析,且将结果发送到管理员邮箱的功能。如果不熟悉,还真的要花点功夫。安装sendmail 的内容就不详序了,搜索一下有一大把,这里总结一下用法。

发送过程是:使用PHP分析服务器日志,再用服务器的计划任务每天凌晨执行一下PHP文件,将结果发送到管理员的邮箱。

//PHP文件:sendmail_log.php
if (!(empty($_SERVER["REQUEST_URI"]) && $_SERVER["argc"]>=1)){
die("This program must run at server!!");
}
/*这里写分析日志代码*/
$detail = "发送的内容";
$subject = "发送的标题 ";
exec('(echo "From:myemail@domain.com"; echo "Subject:'.$subject.'"; echo '.$detail.')| /usr/sbin/sendmail "aaa@qq.com,bbb@qq.com";',$aa,$bb);


这里的From将会在收件箱中显示为发信人,可以支持邮件群发,在后台的参数增加目标邮箱用逗句隔开即可。

要注意的一点,最后一条语句,字符串中是不请允许这些字符出现:逗号,小括号,大于号。在测试过程发现含有这些符号,邮件会发不出去。应当是程序这些符号当命令符了,这里我没有非得用这些东东,跳过不用即可。如果真要使用,特别处理一下也可以。

//SH脚本文件:sendmail.sh
#!/bin/bash
cd /data/web/admin/update
/usr/bin/php sendmail_log.php


最后用crontab -e命令在服务器计划任务中添加一下凌晨两点执行这个文件

#!/bin/bash
0 3 * * * /data/web/admin/update/sendmail_log.sh
//分 时 日 月 当周的第几天  文件 > 正常输出 异常输出


到此完成了服务器分析且用sendmail发送到指定的邮箱中了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: