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.973 ]

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

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

Alterando quotas via PHP (navegador)

Consultando servidores SNMP com PHP

Criando um painel de rede em PHP

Montando um velocímetro de internet com PHP e GD

  
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