简单的互联网连接正常运行时间监视器

简单的互联网连接正常运行时间监视器

我只需要监控互联网连接中断的频率以及持续时间。我本来打算写一段 Python 代码,每分钟 ping 8.8.8.8,但我认为一定有一个实用程序可以做到这一点 - 并生成一份不错的报告

但这是一个具有简单 SOHO 类型连接的分支机构,没有 SNMP 路由器,仅限 Windows,必须在非专用于此任务的台式机上运行。

不需要知道容量、ping 延迟或任何其他信息 - 只需要向有线电视公司报告宕机超过几秒钟的次数。

答案1

我反过来做平多姆。免费帐户,一次检查。Ping 路由器的 WAN IP 地址,一切正常。您会收到每月的正常运行时间报告,并且可以向有线电视公司大喊大叫。

答案2

我不知道任何实用程序,但我用 perl 为自己做了一个简单的代码:

#!/usr/bin/perl

use Net::Ping;
use POSIX qw/strftime/;

if (-e '/var/run/net_test.pid') {
        print "net_test already running.\n";
        exit;
} else {
        system "touch /var/run/net_test.pid";
}

my $host   = "www.google.com";
my $ping   = Net::Ping->new('icmp');
my $result = $ping->ping($host,2);

if ($result != 1) {
        $format = strftime('[%d/%m/%Y %H:%M:%S]',localtime)." Internet is not available...";
        $run = `echo $format >> /var/log/virtua_net`;
        while ($result != 1) {
                $result = $ping->ping($host,2);
                sleep 60;
        }
        $format = strftime('[%d/%m/%Y %H:%M:%S]',localtime)." Internet is back...";
        $run = `echo $format >> /var/log/virtua_net`;
} else {
        $format = strftime('[%d/%m/%Y %H:%M:%S]',localtime)." Internet is ok...";
        $run = `echo $format >> /var/log/virtua_net`;
}
$ping->close();

system "rm -rf /var/run/net_test.pid" if (-e "/var/run/net_test.pid");
exit;

它的作用是,每次运行时都会尝试 ping 谷歌,然后它会将是否收到回复以及时间打印到一个文件中,以便您稍后可以检查从什么时间到什么时间互联网不可用。

如果您喜欢它,我可以做一些小改动以在 Windows 中使用,您确实需要安装 ActivePerl,仅此而已。

唯一需要改变的是路径和命令,它们在 Windows 上可能有所不同,仅此而已。

答案3

我目前正在调查一个类似的问题(分支机构的 DSL 故障)。我正在远程运行 PingPlotter;它是一个 Windows 程序,可以生成一个简单易读的图表。我使用该图表告诉 ISP 链接断开的时间。

(现在正在等待 ISP 真正修复它 - 如果您有任何关于如何让电信公司更快地工作的建议,请告诉我!)

答案4

Powershell 快速而又肮脏

while ($true) {

  #if (test-connection -count 1 microsoft.com -Quiet) {    



  if (test-connection -count 1 google.com ) {    
   $result=(get-date).ToString("yyyy-MM-dd hh:mm:ss")
   $result = "$result ok"
   "$result" | Tee-Object -FilePath c:\~~temp\router_log.txt -append     #"$result" | Out-File -FilePath c:\~~temp\router_log.txt -append

   sleep 5

 } else {
    while (-not (test-connection -count 1 google.com -Quiet)) {    
        $result=(get-date).ToString("yyyy-MM-dd hh:mm:ss")
        $result = "$result down"
        "$result" | Tee-Object -FilePath c:\~~temp\router_log.txt -append
        sleep -millisecond 100
    }
}

}

相关内容