elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Comunicaciones
| |-+  Redes
| | |-+  Duda básica
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda básica  (Leído 4,962 veces)
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Duda básica
« en: 21 Febrero 2011, 23:41 pm »

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:
Código
  1. 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

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: Duda básica
« Respuesta #1 en: 22 Febrero 2011, 00:29 am »

En Linux para pasar de IP estatica a dinamica hay que cambiar esta linea en el fichero de configuracion:

Código:
iface eth0 inet dhcp 
Dinámica.

por

Código:
iface eth0 inet static
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 Mascara

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.


En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Duda básica
« Respuesta #2 en: 22 Febrero 2011, 00:59 am »

Gracias, me has aclarado la duda, solo esa parte me faltaba para ponerme a trabajar, gracias.

Cualquier duda te comento.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Duda básica
« Respuesta #3 en: 28 Febrero 2011, 07:37 am »

@madpitbull_99

Y si mi fichero está como sigue?


Código:
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?

Código:
iface eth0 inet dhcp

¿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

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: Duda básica
« Respuesta #4 en: 28 Febrero 2011, 08:18 am »

Citar
Y si mi fichero está como sigue?


Código:
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.

Citar
¿Si el usuario me da "dinamica" solo tengo que volcar al archivo /etc/network/interfaces lo siguiente?

Código:
iface eth0 inet dhcp
¿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.

Citar
¿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.

Citar
¿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:

Código
  1. #/bin/bash
  2. # Author: Joshua Bailey
  3. # Name: netHome
  4. # Syntax: netHome
  5. # Summary: used to fix your network settings after
  6. # changing them for another location (or dhcp)
  7.  
  8. function getCurIP
  9. {
  10. # $1 should be the device
  11. ifconfig $1 | grep inet > ~/ip.find
  12. cat ~/ip.find | awk '{print $2}' > ~/ip.find
  13. CUR_IP=`cat ~/ip.find`
  14. CUR_IP=${CUR_IP:5:${#CUR_IP}-5}
  15. rm ~/ip.find
  16. }
  17.  
  18. # setting the domain name
  19. read -p "Please input your domainname (`domainname`): " DMN
  20. if [[ ${#DMN} == 0 ]]
  21. then
  22. DMN=`domainname`
  23. fi
  24. # end setting domain name
  25.  
  26. # setting the hostname
  27. read -p "Please input your hostname (`hostname`): " HSN
  28. if [[ ${#HSN} == 0 ]]
  29. then
  30. HSN=`hostname`
  31. fi
  32. # end setting hostname
  33.  
  34. # setting the device
  35. read -p "Please input your the device you will be using (eth0): " DEV
  36. if [[ ${#DEV} == 0 ]]
  37. then
  38. DEV=eth0
  39. fi
  40. # end setting device
  41.  
  42. # get the current ip
  43. getCurIP $DEV
  44.  
  45. # setting the ip
  46. read -p "Please input your chosen IP for this machine ($CUR_IP): " IP
  47.  
  48. if [[ ${#IP} == 0 ]]
  49. then
  50. IP=$CUR_IP
  51. fi
  52.  
  53. ifconfig $DEV up
  54. ifconfig eth0 | grep $IP > /var/null
  55.  
  56. if [[ $? != 0 ]]
  57. then
  58. ifconfig $DEV down
  59. echo "*** IP not set ***"
  60. echo "*** Setting ***"
  61. ifconfig $DEV $IP
  62. ifconfig $DEV up
  63. else
  64. echo "*** IP matches ***"
  65. echo "*** No changes made ***"
  66. fi
  67. # end setting the ip
  68.  
  69. # setting the default gateway
  70. echo "*** Checking default gateway ***"
  71. echo "*** This may take some time ***"
  72. echo "*** Please wait ***"
  73.  
  74. route > ~/test.route
  75. cat ~/test.route | awk '{if ($1 == "default") print $2;}' > ~/test2.route
  76. CUR_DEF=`cat ~/test2.route`
  77. read -p "Please input your default gateway ($CUR_DEF): " DEF
  78.  
  79. if [[ ${#DEF} == 0 ]]
  80. then
  81. DEF=$CUR_DEF
  82. fi
  83.  
  84. cat ~/test.route | awk -v GW=$DEF '{if ($2 == GW) print $2;}' > ~/found.route
  85. FOUNDIT=`cat ~/found.route`
  86.  
  87. if [[ $FOUNDIT == $DEF ]]
  88. then
  89. echo "*** Default gateway matches ***"
  90. echo "*** No changes made ***"
  91. else
  92. route del default 2> /dev/null
  93. # route add default gw $DEF dev $DEV
  94. echo "*** Default gateway set ***"
  95. fi
  96.  
  97. rm -f ~/*.route
  98. # end setting the default gateway
  99.  
  100. # begin setting dns
  101. grep search /etc/resolv.conf >~/search.dns
  102. TEMP=`grep -n nameserver /etc/resolv.conf`
  103. echo $TEMP > nameserver.dns
  104.  
  105. cat ~/search.dns | awk '{print $2;}' > ~/search.dns
  106. CUR_PRIM=`echo $TEMP | awk '{print $2}'`
  107. CUR_SEC=`echo $TEMP | awk '{print $4}'`
  108.  
  109. read -p "Please input your primary dns ip ($CUR_PRIM): " PRIM
  110. if [[ ${#PRIM} == 0 ]]
  111. then
  112. PRIM=$CUR_PRIM
  113. fi
  114.  
  115. read -p "Please input your secondary dns ip ($CUR_SEC): " SEC
  116. if [[ ${#SEC} == 0 ]]
  117. then
  118. SEC=$CUR_SEC
  119. fi
  120.  
  121.  
  122.  
  123. echo "*** Checking DNS entries ***"
  124. CON=`cat /etc/resolv.conf | grep $DMN`
  125. CON2=`cat /etc/resolv.conf | grep $PRIM`
  126. CON3=`cat /etc/resolv.conf | grep $SEC`
  127. if [[ ! ${#CON} -gt 0 || ! ${#CON2} -gt 0 || ! ${#CON3} -gt 0 ]]
  128. then
  129. echo "*** Editing /etc/resolv.conf ***"
  130. echo "search $DMN" > /etc/resolv.conf
  131. echo "nameserver $PRIM" >> /etc/resolv.conf
  132. echo "nameserver $SEC" >> /etc/resolv.conf
  133. else
  134. echo "*** All DNS entries match ***"
  135. echo "*** No changes made ***"
  136. fi
  137. # end setting dns
Fuente
En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Duda básica
« Respuesta #5 en: 28 Febrero 2011, 08:29 am »

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:

Citar
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

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Duda básica
« Respuesta #6 en: 1 Marzo 2011, 01:47 am »

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.35

Los siguientes valores son los que me da el programa:


Código:
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

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
y0g-s0th0th

Desconectado Desconectado

Mensajes: 148



Ver Perfil
Re: Duda básica
« Respuesta #7 en: 1 Marzo 2011, 03:47 am »

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 Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Duda básica
« Respuesta #8 en: 1 Marzo 2011, 03:50 am »

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:


Citar
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

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: Duda básica
« Respuesta #9 en: 1 Marzo 2011, 11:58 am »

¿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:

Código:
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:

Código:
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



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda basica
PHP
cuerty 3 2,417 Último mensaje 17 Agosto 2008, 05:53 am
por coolfrog
Duda muy básica
PHP
HJ ~ 3 2,689 Último mensaje 28 Diciembre 2009, 01:00 am
por jdc
[VBS] Duda basica script
Scripting
RADIACTIVO 4 2,525 Último mensaje 27 Noviembre 2012, 19:20 pm
por RADIACTIVO
Duda básica en C++ « 1 2 »
Programación C/C++
dorkam 10 5,606 Último mensaje 6 Junio 2013, 19:40 pm
por dorkam
Duda basica en compatibilidad de procesadores
Hardware
Martin512 2 1,461 Último mensaje 24 Abril 2014, 22:57 pm
por Martin512
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines