如何用批处理脚本检查日志文件并发邮件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用批处理脚本检查日志文件并发邮件相关的知识,希望对你有一定的参考价值。

最好是能做到判断一个目录里最新的日志文件里有没有这个SUCCESSFUL单词,有发成功邮件,没有发错误邮件,比如20101026.log这样的文件,邮件内网有exchange服务器,不能发邮件写入一个文本也行,高手指教,谢谢,别的脚本或工具也可以。

参考技术A 我们写的脚本不一定在你的机器上使用是正常的,这里面涉及到操作系统,系统日期等环境变量的问题,如果要规范化的话,代码可能会很长,我建议你如下操作:
1:确定20101026.log这样的文件 是否是每天生成一个,如果是的话,可以使用

echo %date% 等来取出文件名来等于当天。(%date% 格式如果不等于 20101026的话你 要将格式改过来

2:判断日志文件里面有没有SUCCESSFUL单词 最 简单的方法 可以使用下面格式

type c:\aaaa.txt|find /i "SUCCESSFUL"
if "%errorlevel%"=="0" (echo 日志里面还真有这个SUCCESSFUL 单词) else (echo 日志里面没有你所说的单词)
pause

其中c:\aaaa.txt就是你的日志文件,

3:至于发邮件,嘿嘿,这个先保留
4:写入文本文件的话你将:echo 日志里面还真有这个SUCCESSFUL 单词 改成 echo 日志里面还真有这个SUCCESSFUL 单词>>c:\abc.txt 就行

参考资料:自己的脑袋

nodejs 定时调用shell脚本来备份数据库和日志文件并发送到邮箱

安装mailx,靠它来发送邮件

yum install mailx

编辑配置文件

vim /etc/mail.rc #添加如下内容

set [email protected]
set smtp=smtp.163.com
set [email protected]
set smtp-auth-password=xxx
set smtp-auth=login

---说明
from:对方收到邮件时显示的发件人
smtp:指定第三方发邮件的smtp服务器地址
set smtp-auth-user:第三方发邮件的用户名
set smtp-auth-password:用户名对应的密码,有些邮箱填的是授权码
smtp-auth:SMTP的认证方式,默认是login,也可以改成CRAM-MD5或PLAIN方式

linux脚本文件源码(注意一定要直接在linux系统里直接编辑,不然创建文件的后缀名会带问号!!!):

#!/bin/bash
echo "开始"
#备份数据库
mysqldump -uroot -p数据库密码 数据库名字 > /home/wwwroot/bak/`date +%Y_%m_%d`.sql
echo ‘备份数据库完毕‘ 
#备份日志(将日志文件复制到备份数据库的文件夹里)
oldlog=/home/wwwlogst/web.log
newlog=/home/wwwroot/bak/`date +%Y_%m_%d`.log
cp ${oldlog}  ${newlog} 
echo "" > ${oldlog}
echo ‘备份日志完毕‘ 
#打包文件夹
name= /home/wwwroot/`date +%Y_%m_%d_%H_%M_%s`.zip 
old= /home/wwwroot/bak
zip -r ${name} ${old} 
echo ‘打包文件夹完毕‘
#发送邮件
echo `date +%Y_%m_%d数据库备份` | mail -s `date +%Y_%m_%d备份邮件` -a  ${name} 你的邮箱@qq.com 
echo ‘发送邮件完毕‘
echo "全部完毕"

nodejs 定时调用脚本的源码

/**
 * Created by Administrator on 2018/2/25 0025.
 */
var https = require(‘http‘);
var schedule = require(‘node-schedule‘);
var exec = require(‘child_process‘).exec;
var cmdStr = ‘sh /home/wwwroot/myemail.sh‘;//这里面写你要执行的命令就行

var rule = new schedule.RecurrenceRule();
// rule.second = [0,10,20,30,40,50];//隔十秒
rule.hour =23;rule.minute =55;rule.second =0;//每天23点55分执行
var j = schedule.scheduleJob(rule, function(){
exec(cmdStr, function(err,stdout,stderr){
    console.log("已执行");
});
console.log(‘现在时间:‘,new Date());
});

以上是关于如何用批处理脚本检查日志文件并发邮件的主要内容,如果未能解决你的问题,请参考以下文章

如何用批处理写自动安装软件的脚本

如何用.bat脚本执行java程序

如何用其他数据模型类型脚本处理枚举数据模型?

如何用批处理建立新文件,并向新文件写入指定内容

如何用批处理发邮件

windows 关闭端口被占用脚本