Página 1 de 1

Ayuda con Script Bash

MensagemEnviado: Dom Set 16, 2012 1:46 am
por silverte
Estoy intentando hacerle una adaptacion al portal3 para implementar un portal en cual pueda usar para registrar los clientes a mi red y que ellos mismos selecciones su plan de navegacion y se agregue automaticamente el perfil al Qos, en esa parte estoy bien ya tengo parte del codigo que funciona, Pero necesito un script el que me ayude a cambiar la ip, es decir que funcione de esta forma, por cada usuario que pase por el portal le asigne a la reserva DHCP la ip 192.168.x.2 Donde X seria un valor cambiante de 1 en 1 por cada linea agregada al reserve.cfg.

No se si me entienda?
Ejemplo:
192.168.2.2
192.168.3.2
192.168.4.2
192.168.5.2
192.168.6.2
Y asi susesivamente
La problematica esta en como hacer para que ese valor X Cambie y permanesca cada vez que se use el script?

Re: Ayuda con Script Bash

MensagemEnviado: Seg Set 17, 2012 3:24 pm
por silverte
Alguna idea?

Re: Ayuda con Script Bash

MensagemEnviado: Ter Set 18, 2012 11:35 am
por Lelouch
Hola, Segun las ips que coloras usas subredes, verdad?
Código: Selecionar todos
192.168.2.2
192.168.3.2
192.168.4.2
192.168.5.2
192.168.6.2

Se me ocurren varias cosas, puedes usar una base de datos, o un archivo para ir guardando el ultimo numero de subred usado, o puedes tambien crear un codigo que te convierta de ip a int, y a ese int le vas sumando de a 1. También necesitarás un script de servicio que corra cada 5 o 10 segundos y que busque, aplique y recarge los cambios necearios en cada servicio, dhcp, qos, macxip, etc...

Un abrazo,



Lelouch

Re: Ayuda con Script Bash

MensagemEnviado: Ter Set 18, 2012 11:43 am
por silverte
Me podrias ayudar con ese codigo? Ya que no tengo idea de como hacer ese script de lectura para las subredes, puede ser con bases de datos ya que la implemente para guardar los datos de registro, se me ocurre lo siguiente, mi base de datos tambien me guarda la ip con la cual se registra el ciente, 192.168.0.X, existe una forma de hacer una llamada y que solo me devuelva el ultimo numer de esa linea? Es decir el valor de X?

Agradesco si me puedes ayudar, ya que no se nada de programacion todo lo que he hecho hasta ahora es gracias a mirar codigo y codigo probar para que funciona y luego, juaz copiar y pegar!


Saludos
Se hace lo que se puede! :lol:

Re: Ayuda con Script Bash

MensagemEnviado: Ter Set 18, 2012 1:11 pm
por Lelouch
silverte escreveu:...192.168.0.X, existe una forma de hacer una llamada y que solo me devuelva el ultimo numer de esa linea? Es decir el valor de X?...

Hola,

Pensé que usabas subredes, ya que antes colocaste que el número que debía cambiar era 192.168.X.2, o necesitas que tambien te devuelva ese?

Para el ultimo número, (e imaginando que usas un archivo a modo de log), harías algo como esto:
Código: Selecionar todos
last_line=$(tail -1 /partition/archivo.log)
Esa línea le asignará a la variable "last_line" el ultimo dato que esté guardado en el archivo llamado archivo.log y de ahí en adelante podrás referirte al último número usando la variable
Código: Selecionar todos
 ${last_line##*.}
Ejemplo: Supongamos que la última línea del archivo es "192.168.0.30", entonces si haces un "echo ${last_line##*.}" te mostrará en pantalla el "30".

Re: Ayuda con Script Bash

MensagemEnviado: Ter Set 18, 2012 1:29 pm
por silverte
Disculpa que te confunda, La idea es usar subredes, te explico detalladamente:

Estoy haciendo la adaptacion del portal 3 para usarlo como sistema de registro, el cual este al registrarse le pedira todos los datos personales al usuario y tambien el plan de datos de su preferencia, todo esto se guarda en un DB.

Que hara el portal?
Por Php:
Ecribira un perfil Qos segun el plan de datos seleccionado.
Escribira una Subred y respectivo amarrexIp al cliente, para esto necesito que tome el ultimo numero de la ip 192.168.0.x para convertirlo en 192.168.x.2, es decir en el rango de la subred. Para Que hago esto?

Sencillo, Como el Qos no deja navegar a ninguna ip Que no este registrada entonces yo creo el perfil 192.168.0.0/24 512 256 1024 para que los usuarios del registro puedan entrar a la red, una vez que pasen por el registro se le asigna automaticamente su Subred y al reiniciar la pc ya tiene acceso a internet con la velocidad de datos contratada.

Me serviria tomar el ultimo numero de la linea 192.168.0.x o Tambien el Campo ID que se le asigna al registrarse el usuario, pero no se como seria la sentencia para llamar el campo ID del usuario, conociendo esto lo guardo en una variable y se me haria facil crear las subredes.

Espero me entiendas :oops:

Re: Ayuda con Script Bash

MensagemEnviado: Ter Set 18, 2012 2:59 pm
por Lelouch
Hola de nuevo silverte.

Bueno, pues entiendo que es lo que quieres hacer, pero no entiendo como es que lo quieres hacer XD, jejejeje, bueno, ya te puse la forma de como obtener la ultima parte de la ip usando sh, ahora tengo varias preguntas:

Supongamos que uso mi laptop para conectarme a tu red, tu servidor bfw3 me asigna la ip 192.168.0.104, y cuando abro el navegador me sale una página:
¿esa página pertenece al portal3 intrusos y esta en php?
¿El formulario y la base de datos ya la tienes?
¿Que se debe hacer con la ip 192.168.0.104?
¿A donde envías esa ip 192.168.0.104 o para que la usas?
entiendo que tomarías el 104 y luego creas una subred 192.168.104.2, ¿es esto correcto?

PDTA: En php para obtener el último número de la ip puedes usar explode, algo así:
Código: Selecionar todos
$full_visitorip = $_SERVER['REMOTE_ADDR'];
$ipexploded = explode('.',$full_visitorip);
de ahí en adelante la ultima parte de la ip sería $ipexploded[3]

Re: Ayuda con Script Bash

MensagemEnviado: Ter Set 18, 2012 3:18 pm
por silverte
Supongamos que uso mi laptop para conectarme a tu red, tu servidor bfw3 me asigna la ip 192.168.0.104, y cuando abro el navegador me sale una página:
¿esa página pertenece al portal3 intrusos y esta en php?

No, la pagina pertenece a otro portal, el cual es de bloqueo Total y redireccion al puerto 80

¿El formulario y la base de datos ya la tienes?
ç
Listo, Y funcionando

¿Que se debe hacer con la ip 192.168.0.104?

El formulario de registro la optiene y lo guarda en la Db como Ip de registro

¿A donde envías esa ip 192.168.0.104 o para que la usas?

A la Db.

entiendo que tomarías el 104 y luego creas una subred 192.168.104.2, ¿es esto correcto?

Exactamente esa era la idea inicial pero ahora tras ver que en la base de dato tengo un campo ID que es auto_incrementable por cada usuario registrado,
esto me serviria para crear las subredes de forma mas ordenada, asi cuando me de ip muy lejanas como 192.168.0.102, 192.168,0.200, Etc. no me cree las subredes desordenadas. si no mediante el ID que ese incrementa de 1 en 1.

Gracias por tus respuestas, y disculpa la molestia \/ , pero ahora necesito es la sentencia para sacar el valor ID de la base de datos :oops:

Re: Ayuda con Script Bash

MensagemEnviado: Ter Set 18, 2012 3:54 pm
por Lelouch
silverte escreveu:...Gracias por tus respuestas, y disculpa la molestia \/ , pero ahora necesito es la sentencia para sacar el valor ID de la base de datos :oops:
Hola de nuevo, descuida no es molestia, solo espero que en caso tal que mi ayuda te sirva de algo, después publiques el resultado en el foro para que nos sirva a todos.

Existen varias formas para hacer la consulta, me gusta usar:
Código: Selecionar todos
echo "SELECT * FROM table WHERE row='ip_number'" | mysql database
, recuerda cambiar los datos *, table, row, ip y database por los que corresponda, si quieres solo el campo id pues cambias por esto:
Código: Selecionar todos
echo "SELECT id FROM table WHERE row='ip_number'" | mysql database
, para omitir el nombre de la columna usa "--skip-column-names" (ej.: ... | mysql database --skip-column-names).

Un abrazo,



Lelouch

Re: Ayuda con Script Bash

MensagemEnviado: Qua Set 19, 2012 1:35 pm
por silverte
Lelouch escreveu:
silverte escreveu:...Gracias por tus respuestas, y disculpa la molestia \/ , pero ahora necesito es la sentencia para sacar el valor ID de la base de datos :oops:
Hola de nuevo, descuida no es molestia, solo espero que en caso tal que mi ayuda te sirva de algo, después publiques el resultado en el foro para que nos sirva a todos.

Existen varias formas para hacer la consulta, me gusta usar:
Código: Selecionar todos
echo "SELECT * FROM table WHERE row='ip_number'" | mysql database
, recuerda cambiar los datos *, table, row, ip y database por los que corresponda, si quieres solo el campo id pues cambias por esto:
Código: Selecionar todos
echo "SELECT id FROM table WHERE row='ip_number'" | mysql database
, para omitir el nombre de la columna usa "--skip-column-names" (ej.: ... | mysql database --skip-column-names).

Un abrazo,



Lelouch


Desde Luego que lo publicare aca en el foro no te preocupes por eso! :o!

Y siguiendo con el tema, no me funciono ninguno de las llamadas que me escribiste, sera porque el código esta en un archivo php y no en .cgi?
Cual seria la llamada en php y que se guarde el resultado de la consulta en una variable?

Re: Ayuda con Script Bash

MensagemEnviado: Qua Set 19, 2012 2:19 pm
por Lelouch
Hola de nuevo,

Si, era para sh ya que pensé que ibas a llamar el sh desde php. La forma usando php es algo similar a esto:
Código: Selecionar todos
<?php
   $dbhost = 'localhost';
   $dbuser = 'root';
   $dbpass = 'pass';
   $dbname = 'db_name';
   $mysqlconn = mysql_connect($dbhost, $dbuser, $dbpass);
   mysql_select_db("$dbname", $mysqlconn);
   $result = mysql_query("SELECT * FROM tabla", $mysqlconn);
   echo "<p>content: ".mysql_result($result, 0, "text")."</p>";
?>


Un abrazo,



Lelouch