FW: mapping en /etc/network/interfaces
Buenas (si llega dos veces, lo siento, pero el server
de correo me lo ha devuelto).
Tengo un pequeño portatil (Celeron 400 del año de
matusalen) donde uso un par de tarjetas pcmcia para
conectarme a red: una es la tipica realtek 10-100 y la
otra una 3com para wifi (la primera de la lista de
tarjetas soportadas por el prism54).
La cuestión es que me gustaría que el
network/interfaces y hotplug detectasen
automaticamente que tarjeta le meto y convenientemente
me levantase la config de una o la otra (solo tengo
metidas o la una o la otra pero no ambas a la vez).
He visto algunos ejemplo en la guia de referencia
debian (en ingles y en español) y en
usr/shrare/doc/ifupdown/examples/network-interfaces.gz
pero no parece funcionarme. Si levanto a mano (ifup
eth0=casa) si funciona pero el hotplug no mace ni
caso. El hotplug, si en vez de llamar a una stanza
mapping llama a una iface parece que si funciona.
Os pongo los ficheros implicados:
#/etc/network/interfaces
# This entry denotes the loopback (127.0.0.1)
interface.
auto lo
iface lo inet loopback
#===========================================================
#Probamos la autodetección automática de tarjeta y red
#Para que se active por hotplug
mapping hotplug
script echo
#Detección de tarjeta
mapping eth?
script /usr/local/sbin/check-mac-address.sh
map 00:00:00:00:00:0F casa
map 00:00:00:00:00:00 universidad
#El parametro que pongo ahí es la dirección MAC de
cada tarjeta,
que no
pongo
#por no ser relevante
# Las diferentes tarjetas/interfaces lógicas
# ifup eth0=[upco|casa|...]
# dado que no parece funcionar la detección automática
#Configurar eth0 con RJ45, red ethernet convencional
en casa
iface casa inet dhcp
hostname miniyo
#Configurar eth0 teniendo la tarjeta Wifi en la uni
iface universidad inet dhcp
hostname miniyo
#a continuación las extensiones wireless
Este es el script al que llamo desde
network/interfaces y que
aparentemente
funciona. Es el que en teoria está en
/usr/shrare/doc/ifupdown/examples/
pero con un par de modificaciones porque no tiraba. Si
lo ejecuto desde
la
shell (sh -x [nombre script] eth0 DIRMAC casa) el
resultado es el
esperado.
#/usr/local/sbin/check-mac-address.sh
#!/bin/sh
# Checks if the given interface matches the given
ethernet MAC
# if it does it exits with 0 status, if it doesn't
then it exists
# with 1 (error) status.
set -e
export LANG=C
if ! [ -n "$1" -a -n "$2" ] ; then
#OJO: en el original entra en el if si lso parametros
1 y 2 son no
nulos
echo "Usage: $0 IFACE targetMAC"
exit 1
fi
iface="$1"
targetmac=`echo "$2" | sed -e 'y/ABCDEF/abcdef/'`
mac=$(/sbin/ifconfig "$iface" | sed -n -e '/^.*HWaddr
\([:[:xdigit:]]*\).*/{s//\1/;y/ABCDEF/abcdef/;p;q;}')
if [ "$targetmac" = "$mac" ]; then
#El script original no escribe nada en la salida
estandar, solo exit0 o
exit
1
#y me suena haber visto en la documentación que es
necesario escribir
la
#stanza antes de acabar el script
echo "$3"
exit 0;
else exit 1;
fi
Acepto consejos o sugerencias (si no no escribiria
esto XD)
Muchas gracias
P
______________________________________________
Renovamos el Correo Yahoo!: ¡100 MB GRATIS!
Nuevos servicios, más seguridad
http://correo.yahoo.es
Reply to: