PHPit - PHP

"Agora, pois, permanecem a fé, a esperança, o amor, estes três; mas o maior destes é o amor." (I Coríntios 13:13)

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

Mão na massa

Este tutorial é tão simples e rápido que vamos direto pro "Mão na massa".
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:

Código: Alternar entre o modo de cópia/destaque
  1. <?php
  2. exec('ping 127.0.0.1', $saida, $retorno);
  3.  
  4. if (count($saida)) {
  5. print 'A Máquina está online e os dados do PING foram gravados em $saida. :)';
  6. } else {
  7. print 'A Máquina NÃO está online ou o host não pode ser encontrado. :(';
  8. }
  9. ?>
<?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.

Código: Alternar entre o modo de cópia/destaque
  1. <?php
  2. $conectado = @ fsockopen('127.0.0.1', 135, $numeroDoErro, $stringDoErro, 10); // Este último é o timeout, em segundos
  3. if ($conectado) {
  4. print 'A máquina está online! :)';
  5. } else {
  6. print 'A máquina NÃO está online! :(';
  7. }
  8. ?>
<?php
    $conectado 
= @ fsockopen('127.0.0.1'135$numeroDoErro$stringDoErro10); // 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!
Rafael Jaques

Dim dim

 

Comentaí! (03)

Mazá Rafa, show de bola, algumas coisas que não ganham a atenção que deveriam receber... Xorna em 15/03/2008 às 14:30 utilizando o Mozilla Firefox Mozilla Firefox 2.0.0.12 no Windows Windows XP
Muito bom este artigo.
Era exatamente oque eu estava procurando, e aqui ele se encontra de uma maneira bem simples e com alternativas =].
Parabéns.

http://www.dodivyper.com.br
http://musicas.dodivyper.com.br Dagmar Aparecido em 06/05/2009 às 21:17 utilizando o Google Chrome Google Chrome 1.0.154.59 no Windows Windows XP
Muito bom kara...parabens pelo seu site...Um Abraço gabriel em 29/03/2010 às 11:09 utilizando o Mozilla Firefox Mozilla Firefox 3.6.2 no Windows Windows XP
 

Comenta logo, pô!

* Todos os links inseridos nos comentários possuem rel="nofollow" para impedir com que crawlers considerem os mesmos como relevantes.
* Os e-mails não são divulgados.

Dados pessoais

Você é realmente um humano?

Finalmente, digite seu comentário :)

Caixinha de Sugestões

O que é isso? Aqui você pode simplesmente digitar uma sugestão (artigos, resenhas, melhorias, etc) sem precisar preencher longos formulários. Digite o que quiser na caixinha abaixo e eu lerei com o maior prazer! Se quiser se identificar, fique a vontade!

O PHPit é redigido e mantido por Rafael Jaques - Política de Privacidade.

XHTML/CSS desenvolvido por André Gazola.

PHPit 2007 - 2009 - Alguns direitos reservados.

Feeds ;)

Creative Commons License

PHPit por Rafael Jaques é licensiado sob a Creative Commons Atribuição-Uso Não-Comercial-Compartilhamento pela mesma Licença 2.5 Brasil License.