Criando um painel de rede em PHP
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:
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.
Neste exemplo utilizei dois hosts do meu site, substitua-os com sua própria configuração, mantendo o formato original hostname => endereço IP.
<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.
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
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)
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);
}
?>
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
(~22 anos atrás)
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
(~22 anos atrás)
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>";
?>
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)
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
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
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 -->
<!-- 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 ....
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)