|
|
Detectando el cable de red
(27137 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.
|
|
|
|
|
|
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 |
|
|
|
|
|---|
|
|
|
|
Calificacion
    Vots: 32 |
Danos tu opinion:
|
|
|
|
|
|
|