[Perl] Executando Ping através de um script
- Detalhes
- Escrito por @WillianBR
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.plwilliansilva.net esta ativo.
williansilva.net [ip: xxx.xx.xx.xxx] esta ativo (tempo de resposta: 2.76 ms)
RC = 1
*** Fim ***
Dúvidas?
Byte Papo Tech

