Eu não conheço nenhum utilitário, mas eu fiz um código simples para isso com 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;
O que faz é que ele tentará executar ping no google toda vez que for executado e, em seguida, imprimirá em um arquivo se tiver uma resposta ou não junto com o tempo, para que você possa verificar mais tarde a que horas e a que horas a Internet não estava disponível.
Se você gosta, eu posso fazer pequenas alterações para serem usadas no Windows e você precisa instalar o ActivePerl, isso é tudo.
As únicas alterações necessárias são caminhos e comandos que podem ser diferentes no Windows e nada mais.