Desenvolvendo um painel de redes com PHP

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.