[Perl] Executando Ping através de um script

Avaliação do Usuário
PiorMelhor 

Aqui, estou transcrevendo um pequeno script Perl, que uso para testar a disponibilidade de um determinado equipamento na rede.     Com os ajustes necessários, ele pode ser programado para rodar através do CRON e periodicamente, ler uma lista de HOST (arquivo texto), e então executar um PING em cada um deles.     Notificando alguém, caso o equipamento não esteja disponível.


        #!/usr/bin/perl -w

	use Net::Ping;

        #nome do equipamento a verificar
	my $host = "williansilva.net"

	$p = Net::Ping->new();

        # aqui eu faço um PING simples
	print "OK: $host esta ativo.\n" if $p->ping($host);

	$p->close();
	
        # aqui eu quero saber o tempo de resposta do PING
	# (requer Time::HiRes)
        $p = Net::Ping->new();

	$p->hires();

	($ret, $duration, $ip) = $p->ping($host, 5.5);

	printf("OK: $host [ip: $ip] esta ativo (tempo de resposta: %.2f ms)\n", 1000 * $duration);

        # Você pode testar o return code para saber se está tudo ok.
	print "RC = $ret\n";

	$p->close();
	print " *** Fim ***\n";

 

Para rodar o script acima, basta mudar as permissões (se estiver usando um sistema com base UNIX (Linux, MacOSX, Unix, BSD, etc.)).

                  chmod   a+rx   seuscript.pl

 

NOTA: Lembrando que no caso da família UNIX, ele não precisa ter  extensão PL para rodar.

 

A primeira linha está orientando o interpretador PERL a emitir alertas quando estiver analisando o código.  Isso será útil ao construir o script, mas deverá desligar quando for colocado em produção.

A versão apresentada é uma simplificação, pois este tipo de script, para testar várias máquinas, deveria ler um arquivo com a lista de hosts a testar (nome ou IP).

E caso ocorra uma falha nos testes, gerar um arquivo de LOG com os nomes dos hosts e enviar por e-mail para um administrador ou grupo.

 

Ao executar o script acima em meu servidor, eu obtive o seguinte resultado:

[root@:/usr/willianbr/work/perl/network/ping]# ./ping.pl
williansilva.net esta ativo.
williansilva.net [ip: xxx.xx.xx.xxx] esta ativo (tempo de resposta: 2.76 ms)
RC = 1
 *** Fim ***

 

Dúvidas?