PHP
Você está aqui: Home » PHP » Criando um painel de rede em PHP
Criando um painel de rede em PHP

Elaborando o script - parte 1
A primeira atitude que qualquer administrador de redes toma quando vai verificar a integridade de uma máquina é abrir um terminal e disparar pacotes ICMP com o comando ping contra essa. Está escrito no manual,sempre comece pelos problemas triviais, pois eles são as causas de 99%dos problemas que podem comprometer o funcionamento da rede de sua empresa.
Agora a pergunta, o que pode lhe tornar um profissional diferenciado ? Ora,o fato de você estar apto a identificar uma falha de forma mais rápida que os outros é uma. É aqui que entram os recursos que a programação lhe oferece. A facilidade de iteração com servidores provida por linguagens interpretadas como o PHP é um recurso que não pode ser desperdiçado. Foi seguindo essa linha de raciocínio que resolvi escrever este artigo, onde criaremos um aplicativo usado para monitorar as máquinas de sua rede usando PHP e o comando ping.
O primeiro passo na construção de nosso script será definir um cabeçalho usado para recarregar nosso script de tempos em tempos. Podemos fazer isso usando a tag meta do HTML:
<META HTTP-EQUIV="Refresh" CONTENT="60">
Neste caso, nosso script será recarregado a cada 60 segundos. Em seguida, vamos definir o array que contém informações sobre os nossos servidores.
<?
$servidores = array (
"fabio.vivaolinux.com.br" => "200.215.128.83",
"webmail.vivaolinux.com.br" => "200.215.128.241"
);
?>
Neste exemplo utilizei dois hosts do meu site, substitua-os com sua própria configuração, mantendo o formato original hostname => ip.
Elaborando o script - parte 2
No bloco abaixo temos o coração do aplicativo. Utilizo uma estrutura de looping para percorrer cada máquina do array servidores, executando um ping e imprimindo seu estado na tela. Aproveitei do recurso de tabelas do HTML para melhorar a formatação da saída do programa.
<?
while (lisa($site,$ip) = each($servidores)) {
$comando = "/bin/ping -c 1 " . $ip;
$saida = shell_exec($comando);
echo "<td>".$site."<br>".$ip."<br>"."Status:";
if ( ereg("bytes from",$saida) ) {
echo "<b>online</b></td>";
} else {
echo "<font color=red><b>não responde</b></font></td>";
}
}
?>
Note que o comando ping acima está no formato padrão de servidores *unix*. Se você pretende executar este script numa máquina que roda Windows, pode substituir essa linha por:
$comando = "C:\windows\ping -n 1 " . $ip;
Outra particularidade foi a expressão regular utilizada para verificar se o host está ativo. No Linux, a resposta ao comando ping é algo parecido com:
64 bytes from 200.215.128.83: icmp_seq=0 ttl=255 time=0.3 ms
Logo, se o valor da variável $saida capturada pelo comando shell_exec contivera expressão "bytes from", sabemos que o host está ativo.
ereg("bytes from",$saida)
Altere essa expressão regular de acordo com a saída do comando ping do seu sistema operacional. No Windows em Português, a saída é parecida com:
Resposta de 200.215.129.6:bytes=32 tempo=1ms Tempo de vida=254
Logo podemos definir uma expressão regular que combine com "Resposta de", por exemplo. Os parâmetros "-n 1" ou "-c 1" dizem ao ping para enviar apenas 1 (um) pacote ICMP para a máquina-alvo. Se você não definir um limite de pacotes enviados, seu script pode ficarem loop enquanto espera pelo retorno do comando.
Elaborando o script - parte final
Agora que todas as partes do nosso programa foram explicadas, vamos unificar nossos blocos para formar nosso aplicativo.
<!-- painel.php -->
<html>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="60">
</head>
<body>
<h3>Painel de Monitoramento de Hosts</h3>
<table border=1 cellspacing=3>
<tr>
<?
$servidores = array (
"fabio.vivaolinux.com.br" => "200.215.128.83",
"webmail.vivaolinux.com.br" => "200.215.128.241"
);
while (list($site,$ip) = each($servidores)) {
$comando = "/bin/ping -c 1 " . $ip;
$saida = shell_exec($comando);
echo "<td>".$site."<br>".$ip."<br>"."Status:";
if ( ereg("bytes from",$saida) ) {
echo "<b>online</b></td>";
} else {
echo "<font color=red><b>não responde</b></font></td>";
}
}
?>
</tr>
</table>
</body>
</html>
<!-- fim do programa -->
Essa é a versão mais simples possível do nosso painel. Vou deixar a incrementação do programa por sua conta. Que tal adicionar o recurso de avisar o administrador de redes por email quando uma máquina não está respondendo ? E sobre adicionar informações sobre quais serviços cada máquina executa para melhor informar os usuários da rede ? Ah, não podemos esquecer de melhorar este aspecto visual é claro, sou tão bom em design quanto você é em tango.
Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br
Outros artigos postados por este autor
- Curso Adobe Flash - Desenho Avançado
- Ajax e SEO
- Quer melhorar a posição de seu site nos motores de busca? Chame o linkbuilder
- Atendimento Técnico
- Implementando um tradutor de línguas no seu web site
- CRM social: mais entrosamento entre empresas e clientes
Artigos relacionados sobre PHP
- Segurança em programação PHP
- Benchmarking de desempenho de código no PHP
- Pegando dados do Google Analytics via PHP
- Gerando PDF com PHP
- Criando um contador de downloads com PHP e MySQL
- Open Search: Adicionando a Busca Rápida no seu site
Parceiros
BR-Linux.org
Criar WEB
Regularização de Imoveis SP
Montagens de Sites
Templates de Sites
Desenvolvedor de Sites
Elaboração de Sites
Produção de Sites
Programador de Sites
Criadores de Sites
Artigos mais acessados
Desenho de Letras - Construindo fontes TTF
Criando um sistema de login
Enviando email em formato HTML em PHP
Menu Circular em 3D
Cargos e salários na área de informática
Como fazer e modificar calendários
Action Script 2.0 ( Primeira Parte )
10 dicas de Webdesign para salvar seu site
Fireworks VS Photoshop
Serviços
Desenvolvimento de Sites e Sistemas WEB
Otimização de Sites (SEO)
Loja Virtual com Sistema Pagseguro
Sistema de Compra Coletiva
Catálogo de Produtos
Parcerias e Soluções de Publicidade
Portifólio Grupo SOS Designers
Fale Conosco







