Por diferentes razones[1] jamás había lidiado con WiFi. Cuando la U.T.T. me proporcionó una laptop, tenía la misma configuración de red[2] en mi casa, por lo que tampoco me había preocupado porque las opciones cambiaran dependiendo de dónde me estaba conectando. Pues bien, aquellos bellos tiempos terminaron; hoy me encontré con la necesidad de conectarme a diferentes access points durante el día y:
- abrir una terminal
- modificar /etc/network/interfaces
- levantar la tarjeta
es demasiado trabajo (también lo es abrir wifi-radar o kwifimanager). Así que me eché un clavado en el
man de
interfaces (y en los archivos de /usr/share/doc/ifupdown/examples/) e hice un pequeño script que me conecte al primer access point que tenga configurado. No pretende ser
lo último y mucho menos la mejor opción, pero por ahora me sirve, ya lo iré depurando (acepto sugerencias).
/etc/network/interfaces /* lo he recortado =) */
auto eth2
mapping eth2
script /usr/local/sbin/cual-ap.sh
# Después del map, he puesto el ESSID de cada access point
# esto es necesario para que funcione el script =)
map Aserta_Bajio eth2-aserta
map m77wifi eth2-casa
map 019e37 eth2-ual
iface eth2-aserta inet dhcp
wireless-essid Aserta_Bajio
wireless-nickname "m77"
wireless-mode Ad-hoc
wireless-key 0011223344
pre-up /sbin/iptables-restore -n < /etc/network/iptables/eth2.aserta
iface eth2-casa inet static
wireless-essid m77wifi
wireless-nickname "m77"
wireless-mode Master
wireless-key aaaaaaaaaabbbbbbbbbb111111
address 192.168.77.77
netmask 255.255.255.0
gateway 192.168.77.1
pre-up /sbin/iptables-restore -n < /etc/network/iptables/eth2.casa
iface eth2-ual inet dhcp
wireless-essid 019e37
wireless-nickname "m77"
wireless-mode Managed
wireless-key s:clavesupersecreta
pre-up /sbin/iptables-restore -n < /etc/network/iptables/eth2.ual
/usr/local/sbin/cual-ap.sh
#!/bin/bash
######################################
#### Para /etc/network/interfaces ####
#### verifica que essid esta dis- ####
#### ponible, y si concuerda con ####
#### alguno... adelante. ####
######################################
cualessid=""
disponibles=`iwlist eth2 scanning |grep ESSID | cut -d \" -f2`
#echo "Disponibles: $disponibles" >&2
while read red tarjeta
do
if [ "$cualessid" ]
then
continue
fi
# echo " Probando $red con $tarjeta" >&2
if [[ -n `echo $disponibles |grep $red` ]]
then
cualessid=$tarjeta
fi
done
if [ "$cualessid" ]
then
echo $cualessid
exit 0
fi
exit 1
No creo que requiera explicación ya que esta muy sencillo, pero va: el script se ejecuta automáticamente al ejecutar
ifup eth2 o bien
ifup -a (ya que la tengo en auto). Primero
escanea -ejem... busca- los
essids disponibles, luego entra a un ciclo
while donde las variables red y tarjeta van obteniendo los valores de cada uno de los map (de /etc/netwok/interfaces) y al encontrar el primero que concuerde se trata de conectar a él. (Lo primero que haré será cambiar ese grep por algo más elegante... y fiable). Por último, si no hay coincidencias, sale con 1 lo cuál previene que se levante la tarjeta.
[1] Es mi primer laptop, no tenía un access point, soy muy flojo, existen wifi-radar, kwifimanager, etc...
[2] Misma clase c, mismos dns, mismo gw...
Comentarios Recientes