[英]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.