2015-11-04 46 views
0

我想在Perl中檢查我的互聯網是否穩定,不穩定或沒有互聯網連接的腳本。Perl檢查互聯網連接30秒如果穩定,不穩定,沒有互聯網連接

我使用Ping :: Net腳本,但答覆是「你已連接到互聯網」,如果穩定,不穩定或沒有互聯網連接,在30秒內不檢查互聯網連接。只需回覆「您已連接到互聯網」。但事實是我的網絡連接不穩定。每3秒連接一次 - 斷開連接。

這是腳本

$ping = Net::Ping->new("icmp"); 
$ping->port_number("80"); 
if ($ping->ping('www.google.com', '10')) { 
    print "You are connected to the internet.\n"; 
} 
else { 
    print "You are not connected to the internet.\n"; 
} 
$ping->close(); 

我想使用wget爲我的測試,但我不知道如何腳本它在Perl。我的項目是用perl編寫的。

+0

請定義您認爲穩定的內容,例如:可以通過ping訪問特定站點,該站點可以通過HTTP訪問,回覆在特定時間內......除此之外,ICMP ping不能有任何內容端口號。端口只能用於TCP和UDP。 –

回答

1

我不確定我是否正確地得到了您的問題,您提到您想要使用wget進行檢查。我使用LWP這裏做在Perl請求,但要執行程序並得到結果只需使用:

my $res = `wget -O - -q http://google.com` 

但我建議去這樣的事情:

use strict; 
use warnings; 
use LWP::UserAgent; 

my $ua = LWP::UserAgent->new; 
$ua->agent("007"); 

my $req = HTTP::Request->new(GET => 'http://google.com'); 

my $res; 
for (1..30) { 
    $res = $ua->request($req); 
    if ($res->is_success) { 
     print localtime." Google is here\n"; 
    } else { 
     print localtime."Google is gone\n"; 
    } 
    sleep 1; 
} 

這不會檢查完整的30秒,因爲請求需要時間,但我認爲這並不重要

+0

如何添加時間限制? –

+0

我需要這個,你可以添加超時,例如這個請求只會在10秒內運行。 –

+0

因爲我第一次寫作時錯過了「30秒」,所以我在回答後立即添加了時間限制。當前代碼運行循環30次,然後退出,每次睡眠1秒。如果你想更改爲10,請將30改爲10 – Jon