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.100 ]
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
Como preparar o Vim/Neovim para corrigir ortografia em português
Root no Samsung Galaxy S3 usando GNU/Linux
RedBug: Lista dos autores de artigos sorteados do mês
Zello - Transforme seu Android (e GNU/Linux) num Walkie Talkie
Organizando projetos com a classe FastTemplate (parte 1)
Leitura recomendada
Script PHP/MySQL - Controle de Máquinas via MAC Address no IPtables
Monitoramento de banda em TEMPO REAL com gráfico utilizando BWBAR + PHPLOT
Asterisk - Monitorando ligações gravadas através de página em PHP
Consultando servidores SNMP com PHP
Montando um velocímetro de internet com PHP e GD
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