Criando um painel de rede em PHP

Este artigo mostra como criar um painel para monitorar as máquinas de sua rede. O objetivo do aplicativo é identificar quando um ponto de rede deixa de responder, evitando que alguma máquina que rode serviços essenciais fique fora do ar por muito tempo.

[ Hits: 96.079 ]

Por: Fábio Berbert de Paula em 04/11/2002 | Blog: https://fabio.automatizando.dev


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.

    Próxima página

Páginas do artigo
   1. Elaborando o script - parte 1
   2. Elaborando o script - parte 2
   3. Elaborando o script - parte final
Outros artigos deste autor

tzwatch - Navegando pelo horário mundial no Debian

A função DATE_FORMAT() do MySQL

Minha caixa de ferramentas no GNU/Linux

DesignCap - Ferramenta de design gráfico para leigos

Rodando ASP em servidores web Linux

Leitura recomendada

Alterando quotas via PHP (navegador)

Script PHP/MySQL - Controle de Máquinas via MAC Address no IPtables

Consultando servidores SNMP com PHP

Verificando integridade de servidores POP com PHP/sockets

Asterisk - Monitorando ligações gravadas através de página em PHP

  
Comentários
[1] Comentário enviado por arknoid em 29/12/2003 - 17:07h

pô nunca imaginaria que ia ter artigo asism no VOL!
blz cara!

[2] Comentário enviado por reimassupilami em 17/09/2004 - 15:48h

caramba, muito bom hein... faz tempo q uso php e linux, mas nunca tinha pensado em fazer scripts pra administrar a rede... muito interessante...

até me animei, vou pensar em mais coisas q posso fazer assim...

valeu cara...

[3] Comentário enviado por ciclano em 11/10/2004 - 23:29h

Show mesmo. Testei e funcionou. Só que no meu caso precisaria monitorar Hosts que usam o No-IP em outras cidades. Quero dizer, não tem IP Fixo. Como o ip muda todo dia não consegui pois tudo da resposta como online. Como eu poderia fazer ?

[4] Comentário enviado por dh-00 em 25/10/2004 - 10:52h

show, mas agora gostaria de implementar o envio de e-mail? alguem tem esse codigo????

[5] Comentário enviado por filype em 15/05/2005 - 04:53h

pow cara q shoooooooowww eu estava precisando mto disto só tenho mais uma duvida q vou precisar consultar um forum.

[6] Comentário enviado por adrpat em 26/11/2005 - 22:53h

estou iniciando na adm do linux e axei mt bom este artigo. jah vou colocar em pratica. vlw

[7] Comentário enviado por as1978 em 24/04/2006 - 15:37h

Nota 10, sou iniciante e estava procurando um artigo com um exemplo de monitoramento. Simples porém mas muito eficiente, valeu cara!!

[8] Comentário enviado por GuilhermeCunha em 04/07/2007 - 17:06h

Artigo Bom!

Warning: shell_exec(): Cannot execute using backquotes in Safe Mode in /var/www/vhosts/servermob.com/httpdocs/painel2.php on line 18

Outra coisa, um apache com acesso a shell_exec() não seria vulnerável pelo fato de poder executar comandos na shell?
Abraços...

Guilherme.mob@gmail.com

[9] Comentário enviado por robertofonseca em 30/07/2007 - 17:25h

Excelente artigo!!!
Minha contribuição:
} else {
mail("seuemail@seudominio.com.br","SERVIDOR" .$site, "servidor fora do ar");

apos o else, se o servidor estiver fora do ar, ele manda um email para o seu email com o texto servidor fora do ar.

[10] Comentário enviado por agl77 em 15/04/2008 - 15:08h

Fantastico isso. Vai me ser util pra umas experiencias!
vlw

[11] Comentário enviado por comfaa em 28/10/2008 - 13:02h

muito legal !!!

[12] Comentário enviado por enoquemendes em 19/04/2013 - 11:51h

Sei que esse post é meio antigo mas, no caso do windows o comando correto não seria,

$comando = "C:\\windows\\system32\ping -n 1 " . $ip;

[13] Comentário enviado por didaticacg em 01/01/2014 - 16:28h

Painel de Monitoramento de Hosts
google
8.8.8.8
Status:
( ! ) Deprecated: Function ereg() is deprecated in C:\wamp\www\ping 001\index.php on line 22
Call Stack
# Time Memory Function Location
1 0.0004 673944 {main}( ) ..\index.php:0
não responde Serv local
10.100.200.1
Status:
( ! ) Deprecated: Function ereg() is deprecated in C:\wamp\www\ping 001\index.php on line 22
Call Stack
# Time Memory Function Location
1 0.0004 673944 {main}( ) ..\index.php:0
não responde

ta dando esse error amigao como faço pra corrigir o código ta assim

<!-- 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>

<?php
$servidores = array (
"google" => "8.8.8.8",
"Serv local" => "10.100.200.1"
);

while (list($site,$ip) = each($servidores)) {
$comando = "C:\\windows\\system32\ping -n 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 -->

[14] Comentário enviado por biasaneto em 20/07/2016 - 12:41h

Amigo ...muito legal esse script ...mas teria como organizar os hosts monitorados no array para que aparecesse em 4 colunas de 10 hosts cada...


$servidores = array (

"Ag. teste1" => "192.168.0.11",
"Ag. teste2" => "192.168.0.12",
"Ag. teste3" => "192.168.0.13",
"Ag. teste4" => "192.168.0.14",
"Ag. teste5" => "192.168.0.15",
"Ag. teste6" => "192.168.0.16",
"Ag. teste7" => "192.168.0.17",
"Ag. teste8" => "192.168.0.18",
"Ag. teste9" => "192.168.0.19",
"Ag. teste10" => "192.168.0.20",
"Ag. teste11" => "192.168.0.21",
"Ag. teste12" => "192.168.0.22",
"Ag. teste13" => "192.168.0.23",
"Ag. teste14" => "192.168.0.24",
"Ag. teste15" => "192.168.0.25",
"Ag. teste16" => "192.168.0.26",
"Ag. teste17" => "192.168.0.27",
"Ag. teste18" => "192.168.0.28",
"Ag. teste19" => "192.168.0.29",
"Ag. teste20" => "192.168.0.30",
"Ag. teste21" => "192.168.0.31",
"Ag. teste22" => "192.168.0.32",
"Ag. teste23" => "192.168.0.33",
"Ag. teste25" => "192.168.0.34",
"Ag. teste26" => "192.168.0.35",
"Ag. teste27" => "192.168.0.36",
"Ag. teste28" => "192.168.0.37",
"Ag. teste29" => "192.168.0.38",
"Ag. teste30" => "192.168.0.39",


Desde Já agradeço


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts