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

! Esta publicação foi escrita há mais de dois anos. Dificilmente existirão mudanças significativas, mas tenha isso em mente ao lê-la.

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:

<?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!
Rafael Jaques

10 respostas para “Ping – Pingando IP, Máquinas, Endereços e URLs”

  1. Xorna disse:

    Mazá Rafa, show de bola, algumas coisas que não ganham a atenção que deveriam receber…

  2. 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

  3. gabriel disse:

    Muito bom kara…parabens pelo seu site…Um Abraço

  4. guilherme disse:

    troxa vo te kika dia todo

  5. Glauber disse:

    Fala ai cara, um artigo muito bom e útil, tenho um dica a acrescentar, usar o parametro -c no Ping que manda uma quantidade limitada de pacotes, evitando o loop.

    ex:ping -c 5 127.0.0.1

    manda 5 pacotes e para.

    Abraços!

  6. andre disse:

    Cara… o primeiro exemplo pingou até um ip que não existia aqui rsrsrs… o segundo nao testei ainda…

    quanto a dica do "-c", excelente.. deixou o script bem rápido….

  7. Roberto Salles disse:

    Parabéns pela informação e disponibilidade.

  8. Marcos disse:

    O cara ainda pode criar uma função ping();e só chamar ela para obter o ping, lembrando que se usa acento agudo para comandos SHELL em vez de aspas simples ou duplas, exemplo:

    function ping($ip){
    $ping = `ping $ip -c4`;
    echo '<pre>'.$ping.'</pre>';
    }

    usando:
    ping('127.0.0.1');
    ou
    ping('www.google.com');

  9. Ricardo Gomes disse:

    Essa instrução pinga a máquina?! o tal ipv4?

    Valeu

  10. Flavio disse:

    Muito bom, parabéns

Deixe uma resposta