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: 97.161 ]
Por: Fábio Berbert de Paula em 04/11/2002 | Blog: https://fabio.automatizando.dev
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.
Página anterior 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
Entrevista com um hacker, via Internet
Instalando um sistema tradutor de línguas no seu Linux
Acessando disquetes no Linux
Otimizando seu web server com Apache2 + Lighttpd
Qt 6.10 e Python 3.14 puxam o ritmo do software livre nesta quarta
Leitura recomendada
Montando um velocímetro de internet com PHP e GD
Consultando servidores SNMP com PHP
Script PHP/MySQL - Controle de Máquinas via MAC Address no IPtables
Monitoramento de banda em TEMPO REAL com gráfico utilizando BWBAR + PHPLOT
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