[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