+ Responder ao Tópico



  1. #1

    Padrão Cadastro de Ip e Maquina

    Salve a todos..

    A muito estou apanhando em busca de uma solução e espero que possam me ajudar.
    Estou precisando criar um sisteminha simples em php e mysql de cadastro de Ip e maquinas da minha rede local, para que eu possa ter um controle de ips ja utilizados, reservados, ativos e outros.
    Mais como ja disse ainda estou apanhando, se alguem tiver alguma dica de como proceder agradecia muitoo, pois sou iniciante nessa area!!

    Obrigado!!!!

  2. #2

    Padrão Re: Cadastro de Ip e Maquina

    #######Segue modelo de uma tabela

    CREATE TABLE IF NOT EXISTS `iplivre` (
    `id` int(11) NOT NULL auto_increment,
    `ip` varchar(200) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=454 ;



    #### Codigo para mostrar os ip em sequência...
    ####

    <td colspan="3" bgcolor="#e9e9e9"><span id="ip6">
    <label>
    <?php

    include("configuracao.php");

    $db = mysql_connect ($host, $login_db, $senha_db)or die("ERROR".mysql_error());
    $basedados = mysql_select_db($database)or die("ERROR".mysql_error());
    ?>
    <select name="ip" id="ip" class="record" >
    <?php

    $sql = "select ip from iplivre ORDER BY id ASC";

    $result = mysql_query($sql);
    $linha = mysql_num_rows($result);
    for ($i=0;$i<$linha;$i++)
    {
    $reg = mysql_fetch_row($result);
    echo "<option>$reg[0]</option>";
    }
    ?>
    </select>
    </label>
    </td>

    Dentro do form que vai gravar no mysql, vc coloca um regra para deletar o ip escolhido, em outra tabela vai ficar os dados da maquina e o ip q vc escolheu.
    Última edição por fsoaress76; 29-04-2010 às 10:33.

  3. #3

    Padrão Re: Cadastro de Ip e Maquina

    Meu amigo fsoares, você esta me ajudando muito, a dica foi exelente.
    Criei meu banco de dados e minha apllicação em html e php, agora que ta o problema, como por exemplo eu pesquisaria o proximo ip disponivel (livre) dentro da tabela.

    O que estou pensando:
    1 - No campo Ip de rede transformar todos os numeros inseridos em binarios e tenho que colocar o delimitador, estava pensando no ponto ( 192.168.20.3) para não misturar os octetos.
    2 - Transformar a mascara de rede em binario.
    3 - Fazer um AND binario para saber qual o endereço de rede.

    Agora como fazer tudo isso e ainda buscar na tabela o proximo IP livre.

    Agradeço muito sua ajuda e se quiser me add no msn!

  4. #4

    Padrão Re: Cadastro de Ip e Maquina

    Eu tbm estou querendo algo assim, vou pesquisar aqui.

  5. #5

    Padrão Re: Cadastro de Ip e Maquina

    Eu uso VPN aki (RADIUS+MYSQL), no cadastro (formulário) eu pego a sequencia de ip com esse condigo acima... e escolho qual a faixa de IP´s que eu quero.

    Ex no Fomulário:
    Cidade_1
    192.168.2.2
    192.168.3.2
    192.168.4.2
    CIdade_2
    10.100.20.2
    10.100.21.2
    10.100.22.2

    Quando mando salvar.
    #####
    $ip = $_POST['ip'];

    #VERIFICO SE ESSE IP NAO ESTA JA CADASTRADO

    $pesquisar = mysql_query("SELECT ip FROM tabela_cadastro WHERE ip = '$ip'", $db)or die("ERROR_Value".mysql_error());
    $contagem = mysql_num_rows($pesquisar);

    if ( $contagem > 0 ) {
    echo "O ip que você escolheu já está cadastrado.<br>";
    echo "volte e reveja";
    }
    else{

    $cadastrar = mysql_query("INSERT INTO tabela_cadastro (ip, fulano, siclano)
    VALUES ('$ip','$fulano',,'$siclano')", $db)or die("ERRO no cadastro do usuário:". mysql_error());

    #apaga ip livre
    $del_ip = mysql_query("DELETE FROM iplivre WHERE ip='$ip'") or die("ERROR tabela ip".mysql_error());

    A Macara vc pode colocar no momento do cadastro.

    Ou se vc quizer pode fazer isso aqui nao sei para que vc que isso.
    //$masc = "ssh $server 'echo iptables -t nat -A POSTROUTING -s $ip -j MASQUERADE >> /dados/users.sh'\n";
    //$for = "ssh $server 'echo iptables -A FORWARD -s $ip -j ACCEPT >> /dados/users.sh'\n";
    //$for2 = "ssh $server 'echo iptables -A FORWARD -d $ip -j ACCEPT >> /dados/users.sh'\n";

    //$regras = '/dados/users.sh';
    //if (!$ip){
    //echo "Arquivo não encontrado";
    //exit();
    //}
    //$fp = fopen($regras, 'a+');
    //fwrite($fp, $masc);
    //fwrite($fp, $for);
    //fwrite($fp, $for2);

    //fclose($fp);

  6. #6

    Padrão Re: Cadastro de Ip e Maquina

    Eai pessoal,,


    Primeiramente eu gostaria de agradeçer muito a ajuda de todos e principalmente a paciência, SEM PALAVRAS.
    Conforme orientações criei o sisteminha de cadastro de ip mais ainda estou tendo alguma dificuldade de entender como ira funcionar, pq sou SUPER leigo nesse assunto, mais estou curtindo muito.

    Criei em html e php o sistema de cadastro pra ter uma ideia.

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>CADASTRO DE MAQUINAS E IP COM BANCO DE DADOS E PHP</title>
    <style type="text/css">
    <!--
    .style1 {
    color: #FF0000;
    font-size: x-small;
    }
    .style3 {color: #0000FF; font-size: x-small; }
    </style>
    <script type="text/javascript">
    function validaCampo()
    {
    if(document.cadastro.maquina.value=="")
    {
    alert("O Campo maquina é obrigatório!");
    return false;
    }
    else
    if(document.cadastro.ip.value=="")
    {
    alert("O Campo ip é obrigatório!");
    return false;
    }
    else
    if(document.cadastro.mascara.value=="")
    {
    alert("O Campo mascara é obrigatório!");
    return false;
    }
    <!-- Fim do Javascript -->
    </script>
    </head>
    <body>
    <form id="cadastro" name="cadastro" method="post" action="cadastro.php" onsubmit="return validaCampo(); return false;">
    <table width="625" border="0">
    <tr>
    <td>
    <?php
    include("./fuctions.php");
    $conexao = mysql_connect("localhost", "teste", "senha1") or die ("Erro de conexão com banco de dados, o seguinte erro de conexao BD ocorreu -> ".mysql_error());
    @mysql_select_db("cadastro",$conexao);
    $query = "SELECT ip FROM maquinas ORDER BY INET_ATON(ip) ASC;";
    $selecao = mysql_query($query,$conexao);
    $linha = mysql_num_rows($selecao);
    for ($i=0;$i<$linha;$i++){
    $reg = mysql_fetch_row($selecao);
    echo "$reg[0] \n <br>";
    $binario=converterIPparaBinario($reg[0]);
    echo "BINARIO = $binario \n<br>";
    //$aux1=substr($reg[0],0,strpos($reg[0],'.'));
    //$aux2=substr($reg[0],strpos($reg[0],'.')+1,strpos($reg[0],'.'));
    //echo "AUX = $aux1 \n<br>";
    //echo "AUX2 = $aux2 \n<br>";

    }
    ?>
    <br><br><br><br><br><br><br>
    </td>


    <tr>
    <td width="32">Maquina:</td>
    <td width="30"><input name="maquina" type="text" id="maquina" size="20" maxlength="20" />
    <span class="style1">*</span></td>
    </tr>

    <td>Ip:</td>
    <td><input name="ip" type="text" id="ip" />
    <span class="style3">Apenas números</span> </td>
    </tr>

    <td>Mascara:</td>
    <td><input name="mascara" type="text" id="mascara" />
    <span class="style3">Apenas números</span> </td>
    </tr>
    <td colspan="2"><p>
    <input name="cadastrar" type="submit" id="cadastrar" value="Concluir meu Cadastro!" />

    <input name="limpar" type="reset" id="limpar" value="Limpar Campos preenchidos!" />

    <span class="style1">* Campos com * são obrigatórios! </span></p>
    <p> </p></td>
    </tr>
    </table>
    </form>
    </body>
    </html>

    Blza:

    Agora o sistema que chama o banco de dados chamado de cadastro.php

    <?php
    $maquina= $_POST ["maquina"];

    $ip= $_POST ["ip"];

    $mascara= $_POST ["mascara"];

    echo "$maquina $ip $mascara";

    $conexao = mysql_connect("localhost", "teste", "senha1") or die ("Erro de conexão com banco de dados, o seguinte erro de conexao BD ocorreu -> ".mysql_error());

    @mysql_select_db("cadastro",$conexao);
    $query = "INSERT INTO maquinas(maquina,ip,mascara) VALUES ('$maquina', '$ip' , '$mascara');";
    mysql_query($query,$conexao);
    echo "Seu cadastro foi realizado com sucesso!";
    ?>

    Por fim "tentei" criar uma função chamada funcions.php.

    <?php

    function converterIPparaBinario($valor){
    $valores = explode(".",$valor); //Separa o IP dos pontos
    echo "0 = $valores[0]\n<br>";
    echo "1 = $valores[1]\n<br>";
    echo "2 = $valores[2]\n<br>";
    echo "3 = $valores[3]\n<br>";
    echo "4 = $valores[4]\n<br>";
    $resultado = "";
    for ($i = 0 ; $i < count($valores) ; $i++){
    $valores[$i] = decbin($valores[$i]); //Converte o valor daquela parte do IP para binário
    if ($i < count($valores)-1){ //Verifica se não é o último registro para colocar o ponto
    $resultado .= $valores[$i] . '.';
    }
    else{ //Se for o último registro, então não coloca o ponto
    $resultado .= $valores[$i];
    }
    }
    return $resultado;
    }
    ?>

    Ok.

    Tudo aparentemente funcionando.

    Mais minha duvida vai ser a seguinte:
    Como eu poço orientar meu sistema que numa rede por exemplo de classe A eu posso ter apenas 256 Host, numa rede de classe B apenas xxx de redes no maximo, e fazer com que ele não embaralhe tudo???
    Caso não entendam minha duvida fiquem a vontade!!!

    Mais uma vez agradeço a todos!!!