Script PHP/MySQL - Controle de Máquinas via MAC Address no IPtables

Nesse meu primeiro artigo, vou mostrar como criar um script funcional em PHP que possibilita a inserção de regras iptables para controle do acesso à Internet das máquinas pelo MAC address.

[ Hits: 24.975 ]

Por: Carlos Cesar Augusto Rosa em 06/11/2012 | Blog: https://www.youtube.com/carlosbrasilsp


Integração com o BD MySQL para cadastro dos MACs address



Também criei uma página para cadastro dos MACs das máquinas no MySQL, o PHP puxa esses MACs e cria as regras dinamicamente, facilitando muito o trabalho. ;)

O formulário HTML:

<html>
<body>

<table Border=1>
<tr>
<td>
<form action="mac.php" method="post">
<h2>ENTRE COM A OPERACAO DESEJADA:</h2>
<h3>CRIAR TABELA MAC:1<br></h3>
<h3>INSERIR NOME E MAC NA TABELA:2<br></h3>
<h3>MOSTRAR MACS CADASTRADOS:3<br></h3>
<h3>CRIAR BASE DE DADOS MAC:5</h3>
<h2><input type="text" name="var0" value=""/></h2><br>

<h2>ENTRE COM O NOME DA MAQUINA:</h2>
<h2><input type="text" name="var1" value=""/></h2><br>

<h2>ENTRE COM O MAC ADDRESS:</h2>
<h2><input type="text" name="var2" value=""/></h2><br>
<input type="submit" value="Enviar"/>

</form>
</td>

</tr>
</table>

<form>
   <input type='button' value='Voltar' onclick="javascript: history.go(-1)" />
</form>

</body>
</html>

E o arquivo PHP:

<hmtl>
<body>
<form>
<input type='button' value='Voltar' onclick="javascript: history.go(-1)" />
</form>

<?php
echo '<h4>';
$data = system('date');
echo '</h4>';

$link = mysql_connect("localhost","carlos","0815");

if (!$link)
{
        die('Não foi possível conectar: ' . mysql_error());
}
echo 'Conexao bem sucedida<br>';
//mysql_close($link);

$opt = $_POST["var0"];
$nome = $_POST["var1"];
$mac = $_POST["var2"];

$db_selected = mysql_select_db('mac', $link);
     if (!$db_selected) {
            die ('Can\'t use foo : ' . mysql_error());
    }

     if ($opt == 1)
     {
       $cria = "CREATE TABLE mac (codigo INT AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(40), mac VARCHAR(50))";
       mysql_query($cria, $link);
     }
     elseif ($opt == 2)
     {
     $insere = "INSERT INTO mac (nome,mac) VALUES ('$nome','$mac')";
     mysql_query($insere, $link)or die(mysql_error());
     printf("Last inserted record has id %d\n", mysql_insert_id());
     }
     elseif ($opt == 8)
     {
         $insere = "DELETE FROM mac WHERE codigo = '$nome'";
         mysql_query($insere, $link)or die(mysql_error());
         printf("Last deleted record has id %d\n", mysql_insert_id());
    echo "<br><h1>ID<font color=red> $nome </font>Deletada!</h1>";
     }

     elseif ($opt == 3)
     {
         $res = mysql_query("select * from mac");
    echo "<h1>Maquinas Cadastradas</h1>";
    while($id=mysql_fetch_array($res, MYSQL_NUM))
    {
    printf("<h3>ID:<font color=red>%s </font>Nome: %s MAC: %s<br></h3> ", $id[0], $id[1], $id[2]);
         }
    mysql_free_result($res);
     }
     elseif ($opt == 4)
     {
     $db_list = mysql_list_dbs($link);
    while ($row = mysql_fetch_object($db_list))
    {
    echo  $row->Database . "\n";
    }
     }
    elseif ($opt == 5)
    {  
          mysql_query("CREATE DATABASE mac", $link) or die(mysql_error());
     echo "Base de Dados mac criada!";
    }
    elseif ($opt == 6)
    {
      mysql_select_db("mac", $link);
      $result = mysql_query("SHOW COLUMNS FROM mac");
      if (!$result)
        {
        echo 'Could not run query: ' . mysql_error();
        exit;
        }
      if (mysql_num_rows($result) > 0)
        {
         while ($row = mysql_fetch_assoc($result))
    {
     print_r($row);
    }
        }
    }
    
    elseif($opt == 7)
    {
      //mysql_select_db("teste", $link);
      $sql = "SHOW TABLES FROM mac";
      $result = mysql_query($sql);
       if (!$result)
        {
        echo "DB Error, could not list tables\n";
        echo 'MySQL Error: ' . mysql_error();
        exit;
        }
        while ($row = mysql_fetch_row($result))
        {
        echo "Table: {$row[0]}\n";
        }
        mysql_free_result($result);
    }
    
    else
         {
         echo "<h1>Nada Realizado no Banco de Dados!</h1>";
         }    

?>

<form>
   <input type='button' value='Voltar' onclick="javascript: history.go(-1)" />
</form>
</body>
</html>

Então é isso.

Espero contribuir para este site e levar o conhecimento que tenho para difundir esse maravilhoso mundo do Software Livre e das possibilidades que o GNU/Linux oferece.

Página anterior    

Páginas do artigo
   1. Montando o script PHP com as regras
   2. O script PHP de comandos no servidor Debian
   3. Integração com o BD MySQL para cadastro dos MACs address
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Monitoramento de banda em TEMPO REAL com gráfico utilizando BWBAR + PHPLOT

Consultando servidores SNMP com PHP

Asterisk - Monitorando ligações gravadas através de página em PHP

Verificando integridade de servidores POP com PHP/sockets

Criando um painel de rede em PHP

  
Comentários
[1] Comentário enviado por adri3d em 06/11/2012 - 13:37h

solução bem interessante essa

uma sugestão é hospedar esse código no http://github.com (que é gratuito para projetos open source),
porque que fica bem fácil de compartilhar esse código,
e ir atualizando com o tempo,
e receber ajuda de terceiros

eu mesmo me ofereço a ajudar


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts