[SP-pm] Net::Ping::External Win/Unix
Thiago Glauco Sanchez
thiago at nerdsland.net
Thu Mar 11 09:38:56 PST 2010
Amigos do Perl.
Eu, thanks God, ja utilizei scripts Perl com monitoração se equipamentos
estão Alive. O Net::Ping é muito mais rápido que o Net::Ping::External. O
Net::Ping::External evoca o comando ping do seu sistema. Enquanto o
Net::Ping cria ele próprio o pacote TCP e o envia endereçado para a porta
TCP Echo. O Net::Ping dá a opção também de checar o tempo de resposta SYN e
ACK das portas TCP. Porém para que o Net::Ping retorne o tempo de resposta
ICMP você precisa ser administrador da máquina que roda o Script pois o
mesmo pega as informações de um nível mais baixo, usando libs do kernel.
Outro pacote que pode ser usado para realizar checagem se determinda estação
está viva na rede é o Net::Telnet.
Se você deseja executar comandos externos, como o prórpio ping, eu recomento
o módulo CPAN Expect no lugar do Net::Ping::External. Ele permite que vc
interaja com qualquer comando do seu computador de uma forma mais fácil e
completa que os pipes do Perl. A desvantagem do Expect é que comandos podem
ter opções de iteração diferentes em plataformas diferentes. Como as opções
do ping no windows e no Linux são diferentes...
Para checar uma rota existe o Net::Traceroute. Qualquer coisa podemos trocar
umas ideias de coisas feitas para monitorar redes...
Exemplo com Net::Ping testado no Windows e no Solaris:
sub check_isup{
my ($self, $timeout, $pkg_size) = @_;
my $ping = new Net::Ping ("tcp", $timeout,$pkg_size);
my @values = $ping->ping($self->{Host});
$ping->close;
return \@values;
}
sub check_icmp{
my ($self, $timeout, $pkg_size) = @_;
$timeout = 5 unless defined $timeout;
$pkg_size = 64 unless defined $pkg_size;
my $ping = new Net::Ping ("icmp", $timeout, $pkg_size);
$ping->hires;
my @values = $ping->ping($self->{Host});
$ping->close;
return \@values;
}
Perl be with you.
More information about the SaoPaulo-pm
mailing list