bat脚本,主要作用,每个五分钟读取日文本件中新增内容,进行错误赛选,如果有错误信息,将错误信息用邮件发送给管理员。
其中awk和sed需要手动下载
:读取number.txt文档,获取上一次执行时文件的行数
for /f "delims=" %%f in (number.txt) do (
set a=%%f
)
:读取新增行,进行ERROR筛选,将赛选信息导入err文件中
D:\tools\awk\awk.exe '{print NR" "$0}' D:\unitrade\esblls\logs\app.log | D:\tools\sed\sed.exe -n "%a%,$p" | findstr "ERROR" > error_tj.log
:上面这条是本脚本最费时间的地方,因为当我在awk 'NR>%A%{PRINT}的时候一直报错,所以就加了sed赛选起始行
set var="error_tj.log"
:获取文件行数,如果为null,则没有报错
for /f "delims=" %%i in (%var%) do (
set /a n+=1
)
:::::::::::::: 发送邮件参数设置::::::::::::::
set from=xxx@163.com
set user=xxx
set pass=xxx
set to=收件人
set subj=日志监控
set mail=error_tj.log
set attach=*.jpg
set server=smtp.163.com
set debug=-debug -log blat.log -timestamp
:判断err文件中是否有数据,有的话就将err文件通过邮件发送给管理员
if %n% GTR 0 ( D:\tools\Blat250\full\blat.exe %mail% -to %to% -base64 -charset Gb2312 -subject %subj% -attach %attach% -server %server% -f %from% -u %user% -pw %pass% %debug% )
:获取最新的行号,并记录到number.txt文件中
D:\tools\awk\awk.exe '{print NR}' D:\unitrade\esblls\logs\app.log | D:\tools\sed\sed.exe -n "$p" > number.txt