Tabela de IP livres

1. Tabela de IP livres

Alexandre f. Basílio
mrpipoca

(usa Ubuntu)

Enviado em 31/03/2010 - 12:33h

Ola, comprimento a todos.

Graças a Deus sou mais um que esta conhecendo as maravilhas do linux.
E ao iniciar nesse mundo conheci a VOL, e sempre acompanho materias tutoriais e duvidas.
Hoje quero ver se alguem pode me dar uma ajuda.
Primeiramente não sei se é aqui que eu posto minha pergunta, mais vou tentar.
Estou precisando criar uma sistema que localiza ip disponiveis na rede.
Minha idéia seria criar uma tabela contendo:
Ip's Reservados (Servidor, Ativos Impressoras).
Ip's Utilizados (Nome da Maquina e Ip configurado)
Ip's Disponiveis
Pra mim seria interessante criar um sisteminha em que eu pudesse cadastra ips utilizados, via browser, onde ele automaticamente me dava o proximo ip da lista disponivel, e não me desse o proximo ip reservado.

Bom não custa tentar, agradeço a atençao e se puder aguardo uma ajudinha. ;)


  


2. Desculpas

Alexandre f. Basílio
mrpipoca

(usa Ubuntu)

Enviado em 05/04/2010 - 12:02h

Peço desculpas pelo incoveniente, sobre o tópico acima relacionado a quem possa interessar, pois como ja mencionei não conheço nada a respeito da linguagem Php, mais como todo o brasileiro não desisto nunca, rss.
Por isso pedi uma ajuda aos amigos. Mais achu que em vão.
Pesquisando achei alguma coisa que me da uma ideia pra começar o que preciso, e aos que interessarem segue abaixo.
Minha ideia inicial é transformar os Ips em binario, pra depois junto com as classes de mascaras fazer o and binario e calcular os ips diponiveis.
Transformar ips em binarios
<?php
function bin($dec) {
if($dec == 0) return 0;
$bin = "";
while($dec >= 1) {
$dec = $dec / 2;
if(substr($dec, -2) == '.5') {
$bin = '1'.$bin;
$dec = $dec - 0.5;
} else {
$bin = '0'.$bin;
}
}
return $bin;
}
function val($pos) {
$inc = 1;
$res = 2;
while($inc < $pos) {
$res = $res * 2;
$inc++;
}
if($pos == 0) $res = 1;
return $res;
}
function dec($bin) {
$dec = 0;
$size = strlen($bin);
for($i=0; $i<$size; $i++) {
$i2 = $size - $i - 1;
$bit = substr($bin, $i2, 1);
if($bit == '1') $dec = $dec + val($i);
}
return $dec;
}
?>


3. Tabela de Ips livres

Alexandre f. Basílio
mrpipoca

(usa Ubuntu)

Enviado em 05/05/2010 - 08:37h

Caros colegas.

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!!!


4. Re: Tabela de IP livres

irado furioso com tudo
irado

(usa XUbuntu)

Enviado em 05/05/2010 - 08:50h

"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!!!"

bem.. para isso o ideal seria vc fazer um curso BOM de redes, porque trata de segmentação e isso é feito com o mascaramento. Só que (IMHO) vc não vai se sentir bem fazendo isso se não conhecer profundamente netmask :( porque é espinhoso.

por exemplo, vamos pegar uma classe C bastante comum: 192.168.1.0

a máscara habitual é /24, o que nos dá 254 hosts, + network (192.168.1.0) + broadcast (192.168.1.255). Supondo-se que vc queira reduzir para (por exemplo) 2 hosts + network + broadcast, a mascara passa a ser:

exemplo: 192.168.1.0/30

[irado@CentOS:~$]: ./ipcalc 192.168.1.0/30
Address: 192.168.1.0 11000000.10101000.00000001.000000 00
Netmask: 255.255.255.252 = 30 11111111.11111111.11111111.111111 00
Wildcard: 0.0.0.3 00000000.00000000.00000000.000000 11
=>
Network: 192.168.1.0/30 11000000.10101000.00000001.000000 00 <== network
HostMin: 192.168.1.1 11000000.10101000.00000001.000000 01
HostMax: 192.168.1.2 11000000.10101000.00000001.000000 10
Broadcast: 192.168.1.3 11000000.10101000.00000001.000000 11 <== broadcast
Hosts/Net: 2 Class C, Private Internet <== note aqui, 2 hosts

os próximos ip serão 192.168.1.3 a 6, com hosts 4 e 5

isso é util quando vc precisa isolar uma rede maior em pedaços menores, ou seja, evitar que uma rede (segmento, na verdade) "fale" com outra.



5. Re: Tabela de IP livres

Alexandre f. Basílio
mrpipoca

(usa Ubuntu)

Enviado em 05/05/2010 - 09:04h

Intão meu amigo irado,, eu conheço classes de ips e redes e sub-redes alguns calculos e outros, mais meu problema é nesse sistema que estou fazendo, não consigo ter uma idéia legal pois por exemplo eu estou cadastrando os campos maquinas e ips ex:

Maquina01 ----- Ip 192.168.7.80
Servidor1 ----- Ip 192.168.7.1 etc...

Agora como fazer o meu sistema interpretar o calculo de sub-rede para ele saber o que é <rede> eo oq é <host> e o numero para cada uma..

Agradeço a ajuda!!!!









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts