+2

Criando um painel de rede em PHP

criado por Fábio Berbert de Paula em 30/06/2002 11:50am
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.

<?php
$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 => endereço IP.

Comentários:

Mostrando 1 - 10 de 10 comentários
jcopacJulio disse:
Galera sou novo aki no PhpBrasil. Por isso estou tendo algumas dificuldades com este script, vcs podem me ajudar na alteração para pingar em maquinas Windows?
22/05/2009 8:05pm (~15 anos atrás)

Olá. Preciso, através do PHP, criar uma ferramenta que bloqueie e desbloqueie a internet de alguns IPs. Olhei este artigo e achei interessante, só que com o comando iptables, no meu caso, não está funcionando. Existe alguma restrição do uso da shell_exec para o comando iptables?
15/04/2005 10:23am (~19 anos atrás)

Uma alternativa Windows!

Pode-se muito facilmente portá-lo para PHP.

http://www.phpbrasil.com/scripts/script.php/id/854
19/03/2003 10:07pm (~21 anos atrás)

Luciano Reis disse:
Olá Pessoal, achei muito interessando este script do Fábio e pensei em algo diferente usando a sua idéia. Estou tentando fazer isso para identificar problemas com roteadores e assim sendo mudar as tabelas de rotas no Linux.
Eu desenvolvi o script abaixo, mas estou tendo alguns problemas, com a instrução If (ela se comporta de forma diferente quando eu executo pelo browser e direto pelo shell do linux - php arp.php)

Se alguém tiver alguma idéia, agradeço desde já.

Luciano C. dos Reis
Net Maringá Internet

<?php
$gw = "10.1.1.3";
$gw2 = "10.1.1.4";
$ip_rede = "192.168.1.0/24";
$cmd_arp = "/sbin/arp -n " . $gw;
$cmd_delroute = "/sbin/route del -net $ip_rede gw $gw";
$cmd_addroute = "/sbin/route add -net $ip_rede gw $gw2";
$saida = shell_exec($cmd_arp);
echo "$saida" . "<br>";
if ( !ereg("no entry",$saida) ) {
echo "Saindo...";
} else {
echo "Excluindo rota: " . $cmd_delroute . "<br>";
$delroute = shell_exec($cmd_delroute);
echo "Incluindo rota: " . $cmd_addroute . "<br>";
$addroute = shell_exec($cmd_addroute);
}
?>
23/10/2002 8:54am (~21 anos atrás)

Juan Roldán disse:
Achei muito interessante seu belo sistema, ocorreu uns problemas mais ja arrumei, gostaria de sabe como eu fasso para descobrir o ip do cara, tipo, se eu abrir um documento limpo, o q devo fazer para que ache o ip do individio?
26/09/2002 4:15pm (~21 anos atrás)

Cléver Anjos disse:
Eu dei uma incrementada no programa usando tabela para ficar "mais bonitinho", heheh
Tambem mudei um pouco a estrutura de dados.
<?php

function teste ( $ip ) {
exec("ping -q -c 1 $ip",$foo,$res);
return ($res==0);
}
$lista['CDL-BH'] = "cdlnet.com.br";
$lista['roteador'] = "cisco.acip.org.br";

echo "<font face=verdana>";
echo "<center>";
echo "<H3>Checagem geral do sistema</H3>";
echo "<table cellspacing=1 cellpadding=2 style=\"border-style:solid;border-width:1px;border-color:black\">";
foreach ( $lista as $k => $v ) {
$cf = ($i++&1)?"#dddddd":"#ffffff";
echo "<tr bgcolor=$cf><td>".ucfirst($k);
echo "<td>$v</td>";
if ( teste ($v) ) {
echo "<td><font color=green>OK</font>";
} else {
echo "<td><font color=red>Problemas!</font>";
}
echo "</tr>";
};
echo "</table>";

?>
13/08/2002 4:21pm (~22 anos atrás)

Felipe Lopes disse:
Só uma observação:
Esse problema foi solucionado no php 4.2 ;-)
Para resgatar uma variavel passada por URL soh pondo $_GET["comando"];

[]'s

Felipe Lopes
05/07/2002 8:43am (~22 anos atrás)

Marco,


Dê uma lida no complemento desse artigo que é
outro artigo como título: "Verificando integridade de servidores POP com PHP/sockets".

Daí basta você mudar a porta 110 usada no
exemplo do mesmo para a porta 80.

Ixalá !


Fábio Berbert de Paula
fabio@vivaolinux.com.br
www.vivaolinux.com.br
02/07/2002 7:39am (~22 anos atrás)

Eu fiz uma pequena alteração no script para que este possa dar quebra de linha na tabela e o resultado dos status das maquinas não fiquem em uma única linha ...

<!-- painel.php -->
<html>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="60">
</head>
<body>
<h2>Painel de Monitoramento de Hosts</h2>
<table border=1 cellspacing=3>
<tr>
<?php
$servidores = array (
"fabio.vivaolinux.com.br" => "200.215.128.83",
"webmail.vivaolinux.com.br" => "200.215.128.241"
);

$aux = 0;
while (list($site,$ip) = each($servidores))
{
$comando = "/bin/ping -c 1 " . $ip;
$saida = shell_exec($comando);
if($aux == 5)
{
echo "</tr><tr>";
}
echo "<td>".$site."<br>".$ip."<br>"."Status:";
if ( ereg("bytes from",$saida) ) {
echo "online</td>";
} else {
echo "<font color=red>não responde</font></td>";
}
$aux++;
}
?>
</tr>
</table>
</body>
</html>
<!-- fim do programa -->

02/07/2002 6:59am (~22 anos atrás)

Eu teste executar uma serie de comandos simples com ls, cp, mv e nenhum deles funciou.
O Motivo de não funcionar é que mesmo que vc passe o conteudo da variavel $comando pela URL (QueryString), quando chegar na linha do comando ping "$comando = "/bin/ping -c 1 " . $ip; " o que vc passou por QueryString vai ser substituido por este...
Sendo assim acho que da para rodar sem preocupações ....
02/07/2002 6:54am (~22 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)