Windows 监控脚本并在崩溃时发送电子邮件
我有一些perl脚本,它们是在Windows2003R2和2008中使用任务调度器调度的。使用perl.exe或通过批处理文件直接调用这些脚本 有时这些脚本无法执行(可能会崩溃),而我们没有意识到这些崩溃 当这些脚本崩溃时,有什么方法可以发送邮件吗?或多或少类似于监视这些脚本 提前谢谢Windows 监控脚本并在崩溃时发送电子邮件,windows,perl,batch-file,crash,monitoring,Windows,Perl,Batch File,Crash,Monitoring,我有一些perl脚本,它们是在Windows2003R2和2008中使用任务调度器调度的。使用perl.exe或通过批处理文件直接调用这些脚本 有时这些脚本无法执行(可能会崩溃),而我们没有意识到这些崩溃 当这些脚本崩溃时,有什么方法可以发送邮件吗?或多或少类似于监视这些脚本 提前谢谢 Karthik用于监控-请检查错误代码。这将帮助你弥补它的失败 对于邮件发送-您可以使用Net::SMTP模块发送电子邮件。如果您需要代码片段,请告诉我。当您可以让插件监控自己时,为什么要从外部监控脚本?首先,您
Karthik用于监控-请检查错误代码。这将帮助你弥补它的失败
对于邮件发送-您可以使用Net::SMTP模块发送电子邮件。如果您需要代码片段,请告诉我。当您可以让插件监控自己时,为什么要从外部监控脚本?首先,您可以使用eval捕获错误,如果出现错误,您可以按照rpg建议使用Net::SMTP模块发送电子邮件。但是,我强烈建议您使用某种日志文件,以便跟踪错误发生之前发生的事情以及导致错误的原因。您的主要目标应该是避免错误。当然,这需要您修改脚本,如果出于任何原因,您不能这样做,那么情况可能会更复杂一些,因为您需要另一个脚本 使用该模块,您可以检索Windows上正在运行的进程,并检查插件是否正在运行
while(1) {
my $found = false;
my $p = Win32::Process::Info->new;
foreach my $proc ($pi->GetProcInfo) {
if ($proc->{Name} =~ /yourscriptname/i ) {
found = true;
}
}
if ($found eq 'false') {
# send email
my $smtp = Net::SMTP->new("yoursmtpserver");
eval {
$smtp->mail("sender@test.it");
$smtp->recipient("recipient@test.it");
$smtp->data;
$smtp->datasend("From: sender@test.it");
$smtp->datasend("\n");
$smtp->datasend("To: recipient@test.it");
$smtp->datasend("\n");
$smtp->datasend("Subject: Plugin crashed!");
$smtp->datasend("\n");
$smtp->datasend("Plugin crashed!");
$smtp->dataend;
$smtp->quit;
};
}
sleep(300);
}
我没有测试这段代码,因为我没有在Windows上安装Perl,但逻辑应该正常。您可以使用PushMon来监视脚本。您要做的是创建与Perl脚本时间表匹配的PushMon URL。然后,您应该在脚本成功运行时“ping”这些URL。如果无法访问这些URL,可能是因为脚本崩溃或电源故障,PushMon将通过电子邮件通知您
免责声明:我与PushMon有关联。如果Perl文件本身在未直接调用或未通过批处理文件调用的情况下崩溃,该怎么办?我正在寻找intranetAh内的服务器是的,这是基于云的。如果我看到可以在内部安装的东西,我会告诉你的。在intranet中设置此选项的一点是,您必须监视断电和SMTP问题。