Autor
|
Tema: Duda básica (Leído 5,289 veces)
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Hola, qué tal, estoy desarrollando un script que se encarga de setear un tipo de conexión. Tengo que hacer un script que dada una IP me devuelva algunas datos. La sintaxis del programa que estoy haciendo es esta: script -r estatica 172.26.0.35
-r : estática o dinámica y la ip Por ejemplo, yo teniendo la IP 172.26.0.35, cómo debería ser la "network", "broadcast", "gateway", "address", "gateway", "netmask", es decir, ¿cómo cambiarían de acuerdo a la IP dada? Esto lo necesito porque editaré un archivo, concretamente el archivo "/etc/network/interfaces". ¿Y cómo sería para una red dinámica?
|
|
« Última modificación: 21 Febrero 2011, 23:47 pm por Leo Gutiérrez. »
|
En línea
|
|
|
|
madpitbull_99
|
En Linux para pasar de IP estatica a dinamica hay que cambiar esta linea en el fichero de configuracion: Dinámica. por Estática. Cuando esta configurada por DHCP, no hay que poner mas datos, pero si vas a configurar una IP estática hay que poner los siguientes valores: address 172.26.0.35 <- Ip del interfaz. netmask 255.255.255.0 <- Mascara de red. network 172.26.0.0 <- Dirección de la red. broadcast 172.26.0.255 <- Dirección de broadcast. gateway 172.26.0.1 <- Ip de la puerta de enlace. dns-nameservers 8.8.8.8 <- Ip del servidor DNS. Para detectar si esta puesta en dinámica puedes buscar dentro del fichero de configuración la palabra "dhcp" si no se encuentra es que esta en estática. Para calcular los demás datos puedes echar un vistazo a las calculadoras IP y a los tutoriales que he puesto en el post de abajo: Calculo MascaraSi tienes dudas de como calcular los parametros, pudes mirar proyectos ya hechos como: PHP Subnet, Calculator, IP Net Calculator. Los dos están en PHP, pero si sabes scripting se entiende y tambien los hay en otros lenguajes. Para Webmin hay un plugin (en Perl) que mirar para ver como calcula los parámetros.
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Gracias, me has aclarado la duda, solo esa parte me faltaba para ponerme a trabajar, gracias.
Cualquier duda te comento.
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
@madpitbull_99 Y si mi fichero está como sigue? auto lo iface lo inet loopback ¿En qué está? Te explico mi duda. Mira, mi script es algo así: comando -r dinamica IP ¿Si el usuario me da "dinamica" solo tengo que volcar al archivo /etc/network/interfaces lo siguiente? ¿qué es lo que debiera tener en cuenta? ¿o solo así como te lo pongo? ¿Se pueden tener varias interfaces? ¿Es decir, con cada llamada al script puedo sobreescribir los valores o tengo que agregar al final dependiendo de lo que me de el usuario?
|
|
« Última modificación: 28 Febrero 2011, 08:16 am por Leo Gutiérrez. »
|
En línea
|
|
|
|
madpitbull_99
|
Y si mi fichero está como sigue? auto lo iface lo inet loopback ¿En qué está? El interface lo es es el interface de bucle local o el loopback, ese tiene que estar obligatoriamente en el archivo de configuración de la tarjeta de red. ¿Si el usuario me da "dinamica" solo tengo que volcar al archivo /etc/network/interfaces lo siguiente? ¿qué es lo que debiera tener en cuenta? ¿o solo así como te lo pongo? Si, así pediría una IP por DHCP al servidor que hay en la red. Debes tener en cuenta que el nombre del interfaz es diferente en cada sistema. En un equipo se puede llamar eth0 y en otro se puede llamar eth3. Para ver el nombre que tiene la tarjeta de red en un equipo puedes ejecutar el comando ifconfig -a y luego parsear (con regex, por ejemplo) la palabra que empieza por eth* y así sacar el nombre del interfaz de red. ¿Se pueden tener varias interfaces? Si, un equipo puede tener mas de una tarjeta de red, si se trata de un servidor proxy o un firewall, tendrá mas de una tarjeta de red. ¿Es decir, con cada llamada al script puedo sobreescribir los valores o tengo que agregar al final dependiendo de lo que me de el usuario? Puedes sobreescribirlo, al final del script si todas las acciones se han realizado bien, reinicia el daemon de la tarjeta de red: /etc/init.d/networking restart. Mira un script parecido a lo que quieres hacer: #/bin/bash # Author: Joshua Bailey # Name: netHome # Syntax: netHome # Summary: used to fix your network settings after # changing them for another location (or dhcp) function getCurIP { # $1 should be the device ifconfig $1 | grep inet > ~/ip.find cat ~/ip.find | awk '{print $2}' > ~/ip.find CUR_IP=`cat ~/ip.find` CUR_IP=${CUR_IP:5:${#CUR_IP}-5} rm ~/ip.find } # setting the domain name read -p "Please input your domainname (`domainname`): " DMN if [[ ${#DMN} == 0 ]] then DMN=`domainname` fi # end setting domain name # setting the hostname read -p "Please input your hostname (`hostname`): " HSN if [[ ${#HSN} == 0 ]] then HSN=`hostname` fi # end setting hostname # setting the device read -p "Please input your the device you will be using (eth0): " DEV if [[ ${#DEV} == 0 ]] then DEV=eth0 fi # end setting device # get the current ip getCurIP $DEV # setting the ip read -p "Please input your chosen IP for this machine ($CUR_IP): " IP if [[ ${#IP} == 0 ]] then IP=$CUR_IP fi ifconfig $DEV up ifconfig eth0 | grep $IP > /var/null if [[ $? != 0 ]] then ifconfig $DEV down echo "*** IP not set ***" echo "*** Setting ***" ifconfig $DEV $IP ifconfig $DEV up else echo "*** IP matches ***" echo "*** No changes made ***" fi # end setting the ip # setting the default gateway echo "*** Checking default gateway ***" echo "*** This may take some time ***" echo "*** Please wait ***" route > ~/test.route cat ~/test.route | awk '{if ($1 == "default") print $2;}' > ~/test2.route CUR_DEF=`cat ~/test2.route` read -p "Please input your default gateway ($CUR_DEF): " DEF if [[ ${#DEF} == 0 ]] then DEF=$CUR_DEF fi cat ~/test.route | awk -v GW=$DEF '{if ($2 == GW) print $2;}' > ~/found.route FOUNDIT=`cat ~/found.route` if [[ $FOUNDIT == $DEF ]] then echo "*** Default gateway matches ***" echo "*** No changes made ***" else route del default 2> /dev/null # route add default gw $DEF dev $DEV echo "*** Default gateway set ***" fi rm -f ~/*.route # end setting the default gateway # begin setting dns grep search /etc/resolv.conf >~/search.dns TEMP=`grep -n nameserver /etc/resolv.conf` echo $TEMP > nameserver.dns cat ~/search.dns | awk '{print $2;}' > ~/search.dns CUR_PRIM=`echo $TEMP | awk '{print $2}'` CUR_SEC=`echo $TEMP | awk '{print $4}'` read -p "Please input your primary dns ip ($CUR_PRIM): " PRIM if [[ ${#PRIM} == 0 ]] then PRIM=$CUR_PRIM fi read -p "Please input your secondary dns ip ($CUR_SEC): " SEC if [[ ${#SEC} == 0 ]] then SEC=$CUR_SEC fi echo "*** Checking DNS entries ***" CON=`cat /etc/resolv.conf | grep $DMN` CON2=`cat /etc/resolv.conf | grep $PRIM` CON3=`cat /etc/resolv.conf | grep $SEC` if [[ ! ${#CON} -gt 0 || ! ${#CON2} -gt 0 || ! ${#CON3} -gt 0 ]] then echo "*** Editing /etc/resolv.conf ***" echo "search $DMN" > /etc/resolv.conf echo "nameserver $PRIM" >> /etc/resolv.conf echo "nameserver $SEC" >> /etc/resolv.conf else echo "*** All DNS entries match ***" echo "*** No changes made ***" fi # end setting dns
Fuente
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Gracias, mañana lo miro con detenimiento, creo que mis dudas por ahora están solventadas. Por cierto, para la configuración estática creo que tendré que recurrir a esto: Si tienes dudas de como calcular los parametros, pudes mirar proyectos ya hechos como: PHP Subnet, Calculator, IP Net Calculator. Los dos están en PHP, pero si sabes scripting se entiende y tambien los hay en otros lenguajes. Para Webmin hay un plugin (en Perl) que mirar para ver como calcula los parámetros. Pero vaya, estoy solo con shell script, y mi script se ejecutará en varias máquinas, así que debo buscar la manera de hacer esos calculos en el mismo script, sabes como podría hacerle sin usar esos programas? ¿podría hacer el calculo con los mismos comandos del sistema ó como podría generalizarlo?
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Nunca me pensé que fuera a ser tan complicado el cálculo ese, pero bueno, tendré que usar "ipcalc", un pequeño ejecutable en c, lo compilo, uso y borro. Una pregunta, para estos parámetros: script -r estatica 172.26.0.35Los siguientes valores son los que me da el programa: leo@leo-desktop:~/Escritorio/proyectos/345$ ipcalc 172.26.0.35 Address: 172.26.0.35 10101100.00011010.00000000. 00100011 Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000 Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111 => Network: 172.26.0.0/24 10101100.00011010.00000000. 00000000 HostMin: 172.26.0.1 10101100.00011010.00000000. 00000001 HostMax: 172.26.0.254 10101100.00011010.00000000. 11111110 Broadcast: 172.26.0.255 10101100.00011010.00000000. 11111111 Hosts/Net: 254 Class B, Private Internet
leo@leo-desktop:~/Escritorio/proyectos/345$
¿Me puedes ayudar a saber cómo crear los dns públicos en el /etc/resolv.conf? Saludos.
|
|
|
En línea
|
|
|
|
y0g-s0th0th
Desconectado
Mensajes: 148
|
es q esos datos dependen exclusivamente de la red en la q estes. podes poner dns genericos, pero los q van no tenes forma de conseguirlos sin tener una conexion activa.
el netmask q pones en el ejemplo podria ser tranquilamente /16 en lugar de /24 ya q la ip es de clase b, pero cualquiera de los 2 va a funcionar en todo caso. el gw tampoco tiene un lugar fijo, lo pueden haber puesto en cualquier lado.
saludos
|
|
|
En línea
|
Para invocar a Yog-Sothoth habrás de esperar a que el sol penetre en la quinta mansión, con Saturno en trino; luego has de trazar el pentáculo de fuego, recitando el noveno verso tres veces; y, repitiéndolo todos los años cuando la Noche del árbol de Mayo y en la de Difuntos, harás que el Ser se engendre en los Espacios Exteriores, más allá de la puerta que custodia Yog-Sothoth.
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Gracias, pregunto porque en el script que me encargaron no me dieron ningún otro dato, y no sé sobre estas configuraciones. Mira lo que me pusieron: Y crear los dns públicos que queramos en el /etc/resolv.conf. La forma de uso sería: mtk -r estatica 172.26.0.35
Pero no me dicen qué valores debe tener. ¿Me podrías decir como poner dns genéricos?
|
|
|
En línea
|
|
|
|
madpitbull_99
|
¿Me podrías decir como poner dns genéricos?
Los DNS no hay que calcularlos. Simplemente tienes que poner la IP del servidor DNS que quieras para ese equipo. Eso se hace en el archivo /etc/resolv.conf de la siguiente manera: nameserver 8.8.8.8 nameserver 8.8.4.4 Ese ejemplo es completamente valido, ya que, se tratan de los servidores DNS públicos de Google. En caso de disponer de un servidor de nombres (DNS) en la red, habrá que poner la IP de ese servidor en el fichero de configuración DNS. Por ejemplo, si la IP del servidor DNS de mi red es: 172.26.0.100 y el nombre de dominio de mi red es: elhacker.net el fichero /etc/resolv.conf quedaría de la siguiente manera: search elhacker.net nameserver 172.26.0.100 Como ya he dicho, en la configuración DNS no tienes que calcular nada.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
duda basica
PHP
|
cuerty
|
3
|
2,582
|
17 Agosto 2008, 05:53 am
por coolfrog
|
|
|
Duda muy básica
PHP
|
HJ ~
|
3
|
2,854
|
28 Diciembre 2009, 01:00 am
por jdc
|
|
|
[VBS] Duda basica script
Scripting
|
RADIACTIVO
|
4
|
2,748
|
27 Noviembre 2012, 19:20 pm
por RADIACTIVO
|
|
|
Duda básica en C++
« 1 2 »
Programación C/C++
|
dorkam
|
10
|
6,061
|
6 Junio 2013, 19:40 pm
por dorkam
|
|
|
Duda basica en compatibilidad de procesadores
Hardware
|
Martin512
|
2
|
1,626
|
24 Abril 2014, 22:57 pm
por Martin512
|
|