segunda-feira, 25 de junho de 2012

Pingando IP, Máquinas, Endereços e URLs

Há dois modos básicos de pingar uma máquina. Com exec e com Sockets.

Função exec()

Utilizando o exec() do PHP, você pode executar algo na linha de comando do sistema. Mas há duas ressalvas aí:
1. Requer que esteja liberado o acesso ao shell via PHP, senão seus códigos do exec() serão bloqueados.
2. O sistema que está rodando o PHP deve ter o “ping” habilitado, ou seja, não deve estar bloqueado por firewalls ou qualquer coisa assim.
Se você não preenche os dois requisitos acima, pule para a próxima etapa.

O código para pingar uma máquina, via exec(), é o seguinte:

<?php
    exec('ping 127.0.0.1', $saida, $retorno);
    if (count($saida)) {
        print 'A Máquina está online e os dados do PING foram gravados
               em $saida. :)';
    } else {
        print 'A Máquina NÃO está online ou o host não pode ser 
               encontrado. :(';
    }
?>
Só não esqueça de trocar o IP que vai ser pingado! :P

Pingando via Sockets
Se você não pode ou não quer usar o exec(), há outra alternativa.
Usando sockets, você tenta conectar a um computador usando uma 
determinada porta e verifica se ele responde.
 A única coisa que você precisa saber é uma porta que esteja aberta no host.
O exemplo abaixo utiliza a porta 135, mas você pode usar a porta 80 se estiver
tentando pingar um site, até mesmo para descobrir se ele existe.


<?php
$conectado = @ fsockopen('127.0.0.1', 135, $numeroDoErro, $stringDoErro,
10); // Este último é o timeout, em segundos
if ($conectado) {
   print 'A máquina está online! :)';
} else {
   print 'A máquina NÃO está online! :(';
}
?>


Conclusão
É sempre bastante útil ter um Ping por perto. Com ele você pode 
monitorar máquinas e redes de qualquer lugar.
Uma boa aplicação destas funções é no monitoramento de sistemas via Web.
Um grande abraço a todos e fiquem com Deus!

Nenhum comentário:

Postar um comentário