2023/08/11

用批处理文件监控程序运行状况,不运行时自动发邮件通知。

我有个长驻内存的程序,有时候会自动停止运行,本来想用批处理监控它并自动启动的,但一直失败,只能手动双击exe文件启动,所以迫不得已只能监测到停止时自动发邮件了。

好了,宝子们,上代码!😄

检测程序运行状况的批处理文件xxx.bat的内容:

tasklist | find /i "autotask.exe" && echo "It is running"  || "D:\sendmail.bat"

发送邮件的批处理文件sendmail.bat的内容:

echo set sh=WScript.CreateObject("WScript.Shell") >tmp.vbs
rem 停顿0.3s
echo WScript.Sleep 300 >>tmp.vbs
rem 下面的服务器地址替换成自己的,端口我只测了25
echo sh.SendKeys "open mail.domain.com 25{ENTER}" >>tmp.vbs
echo WScript.Sleep 1000 >>tmp.vbs
echo sh.SendKeys "helo abc{ENTER}" >>tmp.vbs
echo WScript.Sleep 300 >>tmp.vbs
rem 应该还要认证的,但我的服务器做了免认证,所以略过了。请自行Google吧。
rem 发件人
echo sh.SendKeys "mail from:<sender@domain.com>{ENTER}" >>tmp.vbs
echo WScript.Sleep 300 >>tmp.vbs
rem 收件人
echo sh.SendKeys "rcpt to:<yourname@domain.com>{ENTER}" >>tmp.vbs
echo WScript.Sleep 300 >>tmp.vbs
echo sh.SendKeys "data{ENTER}" >>tmp.vbs
rem 邮件头中的发件人和收件人
echo sh.SendKeys "from:sender@domain.com{ENTER}" >>tmp.vbs
echo sh.SendKeys "to:yourname@domain.com{ENTER}" >>tmp.vbs
cho WScript.Sleep 300 >>tmp.vbs
rem 邮件主题
echo sh.SendKeys "subject:AutoTask is not running{ENTER}{ENTER}" >>tmp.vbs
echo WScript.Sleep 300 >>tmp.vbs
rem 邮件内容,可多行。
echo sh.SendKeys "Here is the first line of your message body.{ENTER}" >>tmp.vbs
echo sh.SendKeys "Here is the second line of your message body.{ENTER}" >>tmp.vbs
rem 用一个点(.)结束邮件
echo sh.SendKeys ".{ENTER}" >>tmp.vbs
start telnet
rem 执行vbs文件,发送邮件。
cscript //nologo tmp.vbs
rem 清空vbs文件
echo sh.SendKeys "{ENTER}" >tmp.vbs

没有评论: