Um painel de redes pode ser muito útil para a rede de sua empresa, ou mesmo para sua rede doméstica. Com o PHP podemos criar um painel de redes de forma fácil, nesse artigo não irei desenvolver todo um painel, mas sim passar os conceitos básicos para a criação de um.
Uma das forma de descobrir se um computador está online, é através do famoso comando PING, mas lembrando se houver um firewall bloqueando o comando ping, o código abaixo poderá não funcionar.
<?php // Comando PING $ip = "10.1.1.1"; $ping = `ping $ip -n 1 -l 1`; // Verifica se o computador respondeu if (eregi("bytes=", $ping)) { echo "ONLINE"; } else { echo "OFFLINE"; } ?>
Vamos entender o comando acima; definimos o ip primeiramente e após isso pingamos ele. No Windows quando utilizamos o comando ping, caso o computador esteje online a resposta sempre iniciara com “bytes=”, portanto se na resposta houver “bytes=” deduzimos que o computador está online, caso contrário, está offline.
Mas há também outra forma de descobrir se um computador está online, e ainda saber qual porta está aberta, é através do fsockopen();
<?php // Utilizando o fsockopen $ip = "10.1.1.1"; $porta = "80"; $fp = @fsockopen($ip, $porta, $errno, $errstr, 1); // Verificando o resultado if($fp >= 1){ echo "ON"; } else { echo "OFF"; } ?>
Mas enfim, como eu irei criar meu painel de redes?
Bom com os conceitos acima juntamente com as estruturas de laço – while(), for(), foreach() – será possivel criar o painel.
Por exemplo, podemos armazenar os IPs em um array() e verificar todos eles. O mais correto seria ter uma tabela no banco de dados com os nomes dos computadores da rede e seus respectivos IPs, mas vamos ao código:
<?php $pcs = array( "PC 1" => "10.1.1.1", "PC 2" => "10.1.1.2", "PC 3" => "10.1.1.3", "PC 4" => "10.1.1.4" ); foreach ($pcs as $pc => $ip) { $ping = `ping $ip -n 1 -l 1`; if (eregi("bytes=", $ping)) { echo $pc . ": ONLINE" . "<br />"; } else { echo $pc . ": OFFLINE" . "<br />"; } } ?>
Podemos verificar o status de várias portas seguindo o mesmo conceito:
<?php $portas = array( "HTTP" => "80", "FTP" => "21", "SMTP" => "25", "POP3" => "110" ); foreach ($portas as $nome => $porta) { $ip = "10.1.1.1"; $fp = @fsockopen($ip, $porta, $errno, $errstr, 1); if($fp >= 1){ echo $nome . ": ON" . "<br />"; } else { echo $nome . ": OFF" . "<br />"; } } ?>
Pronto agora você já tem conhecimento o bastante para criar seu próprio painel de redes. Utilizando apenas o comando PING/FSOCKOPEN e as estruturas de laço já é possível verificar status de vários IPs/Portas. Espero que tenha sido útil esse artigo a você, até o próximo artigo.