【问题标题】:Monitoring scripts and sending email when it crashes监控脚本并在崩溃时发送电子邮件
【发布时间】:2012-05-15 07:15:02
【问题描述】:

我有一些 perl 脚本,它们是使用 windows 2003 R2 和 2008 中的任务调度程序安排的。这些脚本是直接使用 perl.exe 或通过批处理文件调用的。

有时这些脚本无法执行(可能会崩溃),我们不知道这些崩溃。

当这些脚本崩溃时,有什么方法可以发送邮件?或多或少像监控这些脚本

提前致谢

卡提克

【问题讨论】:

    标签: windows perl batch-file crash monitoring


    【解决方案1】:

    既然可以让插件自己监控,为什么还要从外部监控脚本呢?首先,您可以使用 eval 来捕获错误,如果发生错误,您可以按照 rpg 的建议使用 Net::SMTP 模块 发送电子邮件。但是,我强烈建议您使用某种日志文件,以便跟踪错误之前发生的事情以及导致错误的原因。您的主要目标应该是避免错误。这当然需要你修改脚本,如果由于某种原因你不能这样做,那么情况可能会更复杂一些,因为你需要另一个脚本。

    使用Win32::Process::Info 模块,您可以检索 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,但逻辑应该没问题。

    【讨论】:

      【解决方案2】:

      用于监控 - 请检查错误代码。这将帮助你解决它的失败。

      对于邮件发送 - 您可以使用 Net::SMTP 模块发送电子邮件。如果您需要代码 sn-p,请告诉我。

      【讨论】:

      • 如果 Perl 文件本身在没有被直接调用而不是通过批处理文件调用的情况下崩溃怎么办
      【解决方案3】:

      您可以使用 PushMon 来监控您的脚本。您所做的是创建与您的 Perl 脚本计划相匹配的 PushMon URL。然后,当您的脚本成功运行时,您应该“ping”这些 URL。如果这些 URL 未被访问,可能是因为您的脚本崩溃或电源故障,PushMon 将通过电子邮件通知您。

      免责声明:我与 PushMon 有关联。

      【讨论】:

      • 我正在内网寻找服务器
      • 啊,是的,这是基于云的。如果我看到可以在内部安装的东西,我会告诉你的。在 Intranet 中进行设置的一件事是您必须监控停电和 SMTP 问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 2011-09-16
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      相关资源
      最近更新 更多