BULMA

Bergantells Usuaris de GNU/Linux de Mallorca i Afegitons   |   Bisoños Usuarios de GNU/Linux de Mallorca y Alrededores
CONTENIDOS
. Jornadas de software libre
. Version para PDA
. Enlaces breves
. La asociacion
. Los mas leidos
. Autores [Actividad]
. Ultimos Comentarios
. Todos los titulares!
. Estadisticas
. Guia de estilo
. ¿Sugerencias?
. Wiki
. XML [Ayuda]
Listas de correo
. Archivos bulmailing
. Archivos BulmaGes
Radio libre :-)
. Des de la Xarxa (Archivos)
. Mallorca en Xarxa
Busquedas

+ Enlaces Linux
Ultimos kernels
(01/10/2014 01:30:24)
    
Google


En bulma.net
En internet
Detectando el cable de red (27730 lectures)
Por Raul Morera
to2eup (http://)
Creado el 20/02/2004 21:54 modificado el 20/02/2004 21:58

Pequeño manual que nos permite lanzar el cliente de DHCP únicamente cuando haya un cable de red conectado al equipo. Ideal para gente con portátil

Pagina1/1

Detección Automática del Cable de Red




Como usuario de ordenador portátil más de una vez me he encontrado con el problema de tener que perder mas de 60s en el proceso de asignacion de direccion IP a traves de DHCP al no estar conectado a ninguna red, puesto que el cliente de DHCP permanecera activo hasta que determine que ha pasado un tiempo prudencial. Bien, con este artículo pretendo explicar como hacer un script que lance el cliente de DHCP sólo cuando haya un cable de red conectado y por lo tanto no perderemos tanto tiempo al arrancar la máquina.

Estos scripts se han reaizado para Debian Woody, pero no os resultara nada dificil adaptarlos para cualquier otra distribución.

Paquetes necesarios: net-tools

primer paso:

apt-get install net-tools

Segundo paso:

nos dirigiremos a /etc/network/interfaces y desconectaremos de auto todas las interficies DHCP. Por ejemplo, supongamos que tenemos el siguiente archivo interfaces:


# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

# The loopback interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

Deberemos quitar las entradas auto eth0 y auto eth1  (si lo que tenemos es un auto común : auto lo eth0 eth1 lo dejaremos como auto lo).

Una vez realizados los cambios en /etc/network/interfaces crearemos un script de detección del cable de red, en este caso lo llamaremos autonet y lo grabaremos en /usr/sbin, no hemos de olvidarnos de asignarle permisos de ejecución.

#!/bin/bash
# /usr/sbin/autonet  -- script de autodetección del cable de red
INICIAL=1
FINAL=$#

while [ $INICIAL -le $FINAL ]
do

if [ "$(/sbin/mii-tool | grep $1)" != "$1: no link" ]
then
ifup $1
fi
shift 1
INICIAL=$(expr $INICIAL + 1)
done

Ahora realizaremos unos cambios en /etc/init.d/networking:

Nos dirigiremos a la seccion start) y buscaremos la linea ifup -a, justo debajo pondremos lo siguiente:

start)
        #/usr/local/bin/bootanim start net.mng
        doopt spoofprotect yes
        doopt syncookies no
        doopt ip_forward no

        echo -n "Configuring network interfaces: "
        ifup -a
       /usr/sbin/autonet eth0 eth1
        echo "done."
        #/usr/local/bin/bootanim stop
        ;;

Si nos fijamos ahora entre ifup -a y echo "done" aparece /usr/sbin/autonet eth0 eth1 que hace una llamada al script que hemos hecho antes, es decir, teneis que introducir la linea que aparece en negrita.


Pues con esto y un bizcocho .....

Ya tenemos listo nuestro script. Con un poco de imaginación y unos pocos while y sleep podreis incluso hacer que la red se active y se desactive al insertar o retirar el cable de red.

Imprimir
Version para
imprimir

Imprimir
Version
PDF
Comentarios
Es posible que se hayan omitido algunos comentarios considerados poco constructivos
1.  Re: Detectando el cable de red (20/02/2004 23:00, #19844)
  Por: iranzop (http://www.uv.es/~iranzop/)
Hola
Es muy interesante... ¿Has pensado en proponerlo como mejora para el paquete en cuestión?

Sería interesante que a cada nueva versión no se sobreescribieran esos cambios, porque la verdad, es interesante disponer de esa característica....

Saludos
No es pot respondre
 
2.  Re: Detectando el cable de red (21/02/2004 11:55, #19848)
  Por: Kiko
Es cierto lo que comentas.

Para esas cosas de detección de cable ethernet (que, por cierto, no soportan todos los drivers) existen soluciones más completas (como el ifplugd que comentan más abajo) que monitorizan el estado continuamente y van parando y arrancando los interfaces según necesidad.

Lo que pasa es que a mi, por ejemplo, el ifplugd no me sirve para mi iBook, porque cuando ha pasado un tiempo con el interfaz bajado, el driver del kelmer (sungem) le quita la alimentación al dispositivo ethernet y entonces nunca más se detecta automáticamente la conexión del cable.

La solución propuesta en el artículo es perfecta para mis necesidades (detección en el momento de arranque del sistema y basta). Además es KISS a tope :-).

Sobre lo de la sobreescritura al actualizar el paquete, yo lo "resolví" poniendo el script en /etc/rc.boot/. y así no tengo que modificar absolutamente nada de ningún script del sistema.
No es pot respondre
 
3.  Re: Detectando el cable de red (21/02/2004 00:09, #19845)
  Por: Anónimo (http://www.gplurv.org)
con ifplugd puedes hacer creo que lo mismo. http://www.stud.uni-hamburg.de/users/lennart/projects/ifplugd/
No es pot respondre
 
4.  Re: Detectando el cable de red (21/02/2004 15:07, #19853)
  Por: emeteo
Yo uso ifplugd + laptop-network para levantar la interfaz de red del portátil.

Así, en el script de cable conectado que ejecuta el ifplugd, llamo a laptop-network para colocar los ficheros de configuración correspondientes a la red que me encuentre, y luego levantar la interfaz.
No es pot respondre
 
5.  Re: Detectando el cable de red (21/02/2004 13:00, #19849)
  Por: alexdum (http://80.25.30.18/~adumont/)
Buena idea este script :).

Para simplificarlo un poco, puedes poner:

while [ $# -gt 0 ]
do
...
shift
done

ya que al hacer el shift cambia el valor de $#
asi no necesitas usar un contador.
No es pot respondre
 
6.  Re: Detectando el cable de red (05/03/2004 01:35, #20039)
  Por: Anónimo
o
for i in $@
do

done
No es pot respondre
 
7.  Re: Detectando el cable de red y init? (25/02/2004 14:37, #19915)
  Por: Anónimo
Bueno es una opción, yo uso dos runlevel distintos en lilo. Uno limpio y otro con dhcpd, nis y nfs. El usurio solo tiene que cojer la opción apropiada en el arranque.
No es pot respondre
 
8.  Re: Detectando el cable de red (28/02/2004 17:26, #19963)
  Por: euler
para redhat y similares (fedora) utilizo http://pepper.linuxfocus.org/~guido/#ethwireck
No es pot respondre
 
9.  Los paths (06/03/2004 17:27, #20055)
  Por: Anónimo
Pues se ve interesante Unicamente un detallito (que quizas funcione asícomo está pero yo creo que no) En las instrucciones indicas que el script se guarda en /usr/bin mas en la modificacion del runcontrol lo mandas llamar desde /sbin A que se te fue :D Gracias
No es pot respondre
 
10.  Re: Los paths (08/03/2004 11:41, #20064)
  Por: to2eup
Es cierto, ahora lo soluciono. Gracias
No es pot respondre
 
11.  Re: Detectando el cable de red (31/03/2004 21:27, #20467)
  Por: Anònim
hola, q tal? me ha parecido muy interesante y lo quiero usar, pero tengo este problema a ver si sabes por que es... Lo que pasa es que si hago ./autonet eth0 con la tarjeta sin levantary el cable dentro, me la levanta e internet funciona. Y si lo ejecuto, con el cable sin conectar, tambien me intenta levantar la tarjeta, sin conseguirlo claro. Porque pasa esto? no deberia detectar que el cable no esta conectado? Gracias y felicidades por el articulo, pues si funciona es muy util abajo te pongo las salidas de ejecutar el comando *****Si no tengo la tarjeta levantada y hago ./autonet eth0 esto es lo que me sale: ykcorse:/usr/sbin# ./autonet eth0 SIOCGMIIPHY on 'eth0' failed: Invalid argument no MII interfaces found Internet Software Consortium DHCP Client 2.0pl5 Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium. All rights reserved. Please contribute if you find this software useful. For info, please visit http://www.isc.org/dhcp-contrib.html Listening on LPF/eth0/00:c0:9f:31:65:c5 Sending on LPF/eth0/00:c0:9f:31:65:c5 Sending on Socket/fallback/fallback-net DHCPREQUEST on eth0 to 255.255.255.255 port 67 DHCPACK from 192.168.1.1 bound to 192.168.1.34 -- renewal in 129600 seconds. ****Si lo hago sin el cable dentro, con la tarjeta sin levantar tambien.. me sale esto: ykcorse:/usr/sbin# ifdown eth0 ykcorse:/usr/sbin# ./autonet eth0 SIOCGMIIPHY on 'eth0' failed: Invalid argument no MII interfaces found Internet Software Consortium DHCP Client 2.0pl5 Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium. All rights reserved. Please contribute if you find this software useful. For info, please visit http://www.isc.org/dhcp-contrib.html Listening on LPF/eth0/00:c0:9f:31:65:c5 Sending on LPF/eth0/00:c0:9f:31:65:c5 Sending on Socket/fallback/fallback-net DHCPREQUEST on eth0 to 255.255.255.255 port 67 DHCPREQUEST on eth0 to 255.255.255.255 port 67 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 6 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 15 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 9 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 9 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 13 No DHCPOFFERS received. Trying recorded lease 192.168.1.34 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. --- 192.168.1.1 ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms bound: renewal in 129417 seconds. ykcorse:/usr/sbin# All rights reserved. bash: All: command not found
No es pot respondre
 
12.  Re: Detectando el cable de red (01/04/2004 09:22, #20477)
  Por: to2eup
Posiblemente lo que pasa es que la mii-tool no reconoce tu targeta, prueba a actualizar tu kernel o las net tools.

Tambén puede ser que tu tarjeta sea demasiado antigua. Si tienes la posibilidad de cambiar la tarjeta de red, una realtek cuesta 6 euros.

Ahora, lo que queda totalmente claro, es que ya sea por tu kernel, por las net tools o por la antigüedad de la tarjeta, la mii-tool es incapaz de comprovar el estado del cable.

Espero que te sirva de algo. ;-)
No es pot respondre
 
GRACIAS
Distribuciones Universal
Por el servidor
Dpto. de Matematicas e Informatica
Calificacion
***0
Vots: 32
Danos tu opinion:
**** Excelente
***0 Muy Bueno
**00 Bueno
*000 Regular
0000 Malo
SECCIONES
Noticia
Breve
Truco
Enlace
Participa
Proyecto
Articulo
Webbulma
Manoletada :-)
Seguridad
Modificado: 22/4/2008 23:10:17 | Tiempo Total: 0.047 segs | Kernel: Linux - i686 - 2.6.26-1-686 | Last boot: too much time ago!!
Powered by Apache    MySQL    PHP    Gimp