繁体   English   中英

如何指导Perl脚本检查网站响应?

[英]How do I direct a Perl script to check for website response?

我正在ping一个网站并检查其可用性,并仅在其关闭时发送电子邮件。 (根据下面的代码,该部分工作正常。)

require LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->timeout(20);
my $response = $ua->get('https://www.Mysite.net/websuite/');
if (! $response->is_success) {
    #print 'CMM Is up and Running';  
    $path = "C:\\prac\\send_email_failure.ps1";
    $pwspath = "c:\\windows\\system32\\windowspowershell\\v1.0\\powershell.exe";
    system("$pwspath -command $path"); #using powershell to invoke email utility      
}

现在,我正在尝试扩展脚本以查看是否

  1. 它可以检查一下它的故障状态并发送电子邮件(现在正在执行),直到被购买后才发送电子邮件。 顺便说一句,我使用Windows任务计划程序每二十分钟运行一次脚本。

  2. 看到网站启动后,应该进入正常的过程,检查网站是否再次关闭并发送电子邮件(例如,网站先关闭然后又重新购买然后又关闭了)。 我使用任务计划程序每20分钟运行一次脚本。

任何帮助表示赞赏。

如果您的脚本是通过某种调度程序执行的,则需要以某种方式保留上一个请求的状态。 例如,您可以创建一个将最后状态标记为“关闭”的文件。

或者,您可以简单地将脚本作为守护程序运行,并每20分钟安排一次检查(例如,使用AnyEvent )。 这样,您就不必处理与文件系统相关的问题。

use LWP::UserAgent;
use AnyEvent;

my $previous = 1;
my $watch = AnyEvent->timer(interval => 1200, cb => sub {
        if(check_status() == 0) {
            if($previous == 1) {
                # send e-mail
            }
            $previous = 0;
        }
        else {
            $previous = 1;
        }
    });

AnyEvent->condvar->recv;

sub check_status {
    my $ua = LWP::UserAgent->new(timeout => 20);
    my $response = $ua->get('...');
    return $response->is_success ? 1 : 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM