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.078 ]
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
Como Turbinar sua Produtividade com VIM - Guia Definitivo do Desenvolvedor
Otimizando seu web server com Apache2 + Lighttpd
Transferindo arquivos com o rsync
Criando gráficos com a classe JPGraph (parte 1)
Firefox 2 e seu recurso de proteção contra Web Phishing
Leitura recomendada
Alterando quotas via PHP (navegador)
Consultando servidores SNMP com PHP
Script PHP/MySQL - Controle de Máquinas via MAC Address no IPtables
Asterisk - Monitorando ligações gravadas através de página em PHP
Vulpes - Gerenciamento de acesso para gateways / proxies no Linux
Comentários
pô nunca imaginaria que ia ter artigo asism no VOL!
blz cara!
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...
Mensagem
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...
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 ?
Mensagem
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 ?
show, mas agora gostaria de implementar o envio de e-mail? alguem tem esse codigo????
Mensagem
show, mas agora gostaria de implementar o envio de e-mail? alguem tem esse codigo????
pow cara q shoooooooowww eu estava precisando mto disto só tenho mais uma duvida q vou precisar consultar um forum.
Mensagem
pow cara q shoooooooowww eu estava precisando mto disto só tenho mais uma duvida q vou precisar consultar um forum.
estou iniciando na adm do linux e axei mt bom este artigo. jah vou colocar em pratica. vlw
Mensagem
estou iniciando na adm do linux e axei mt bom este artigo. jah vou colocar em pratica. vlw
Nota 10, sou iniciante e estava procurando um artigo com um exemplo de monitoramento. Simples porém mas muito eficiente, valeu cara!!
Mensagem
Nota 10, sou iniciante e estava procurando um artigo com um exemplo de monitoramento. Simples porém mas muito eficiente, valeu cara!!
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
Mensagem
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
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.
Mensagem
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.
Fantastico isso. Vai me ser util pra umas experiencias!
vlw
Mensagem
Fantastico isso. Vai me ser util pra umas experiencias!
vlw
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;
Mensagem
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;
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 -->
Mensagem
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 -->
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
Mensagem
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
Enviar