簡體   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