[英]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
}
现在,我正在尝试扩展脚本以查看是否
它可以检查一下它的故障状态并发送电子邮件(现在正在执行),直到被购买后才发送电子邮件。 顺便说一句,我使用Windows任务计划程序每二十分钟运行一次脚本。
看到网站启动后,应该进入正常的过程,检查网站是否再次关闭并发送电子邮件(例如,网站先关闭然后又重新购买然后又关闭了)。 我使用任务计划程序每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.