Script de conexión a redes Wifi con WPA, a LAN mediante cable e IP, a Eduroam y a la UCO (sin Network Manager)

La verdad que no me decidía a compartir este script por su dudosa utilidad para los demás. Me he decidido a ello una vez piponazo me hubo animado a compartirlo. Pero como ya me había pasado varias veces que el querido Network Manager, cuando conectaba a una red, me devolvía una y otra vez el cuadro de conexión para indicar la contraseña, pues decidí hacerme un script de conexión para acceder a las redes por las que suelo deambular, simplemente escribiendo ./conexion y eligiendo una opción.

Especialmente útiles me parecen el caso de conexión a una wifi con WPA (Network Manager en muchas ocasiones y en mi propia red, no conseguía conectarse) y el caso de conexión a redes Eduroam, que van bastante bien y equiparables a la velocidad de la red de la Universidad.

Sin más, paso a describiros las particularidades del invento, comentando dónde están las líneas de las DNS y demás que hay que cambiar.

El caso de conexión a una LAN por cable, por ejemplo, lo utilizo en la Universidad cuando se cae la Wifi. Retiro un cable de algún equipo de un aula (mirando antes su IP en una pegatina adosada a la torre) y a navegar. Lógicamente este trozo de código te pide la IP. Si conectáis algún equipo a un cable, ésta es la opción a utilizar. Lo que se debería cambair entonces con respecto a mi código sería la línea de netmask 255.255.255.0, cambiándola por la máscara de red de la red a la que vayáis a conectar, y las DNS de la misma red, en la línea que dice nameserver 150.214.110.3. Como algo excepcional, si la puerta de enlace de esa red, no termina en «1», deberéis modificar la línea gateway $num1″.»$num2″.»$num3″.1, cambiando el «1» del final.

1)
	echo "Dame IP: "
	read IP
	
	# para el interfaces
	echo auto lo >> $interfaz
	echo -e iface lo inet loopback"n" >> $interfaz

	echo iface eth0 inet static >> $interfaz
	echo address $IP >> $interfaz
	echo netmask 255.255.255.0 >> $interfaz
	num1=$(echo $IP | cut -d . -f1);
	num2=$(echo $IP | cut -d . -f2);
	num3=$(echo $IP | cut -d . -f3);
	echo -e gateway $num1"."$num2"."$num3".1""n" >> $interfaz

	echo iface ath0 inet dhcp >> $interfaz
	echo -e wireless-essid uconet"n" >> $interfaz
	
	# para el resolv.conf, PON AQUÃ? TU DNS
	echo search uco.es >> $dns
	echo -e nameserver 150.214.110.3"n" >> $dns

	sudo mv interfaces /etc/network/interfaces
	sudo mv resolv.conf /etc/resolv.conf
		
	sudo ifdown eth0
	sudo ifdown ath0
	sudo /etc/init.d/networking restart

	sudo ifup eth0
;;

En el caso de conexión a la wifi de una LAN casera con algoritmo WPA o WPA2, se modifica la línea ssid=»ENIGMA» (tened cuidado con las barras para que reconozca las comillas) por el nombre de vuestra red Wifi. Además, debeis obtener la contraseña encriptada utilizada para conectar a vuestra red, escribiendo:
wpa_passphrase nombre_red contraseña

Os devuelve una serie de numerajos que irían en la línea de psk=23d5113aa1a1bafe614f827b5a2f867464125e13438a9b (obviamente lo he alterado un poco :P). El resto de cosas a cambiar son la línea wireless_essid ENIGMA (a sustituir por el nombre de vuestra red) y la linea que dice pre-up wpa_supplicant -B -qq -Dmadwifi -iath0 -c/etc/wpa_supplicant.conf, en la que deberéis cambiar el driver que indica la opción -D (en mi caso, el driver de mi portátil Acer es madwifi). Por último, la DNS que me proprciona mi router la indico en la línea nameserver 192.168.2.1, vosotros deberéis indicar la vuestra.

2)
	# para el interfaces
	echo auto lo >> $interfaz
	echo -e iface lo inet loopback"n" >> $interfaz

	echo -e "network={" >> $supplicant
	echo -e "ssid="ENIGMA"" >> $supplicant
	echo -e "key_mgmt=WPA-PSK" >> $supplicant
	echo -e "psk=23d5113aa1a1bdfe19519b8c02545bdafe614f827b5a2f867464125e13438a9b" >> $supplicant
	echo -e "}" >> $supplicant
	
	sudo rm /etc/wpa_supplicant.conf
	sudo mv wpa_supplicant.conf /etc/wpa_supplicant.conf
	
	echo auto ath0 >> $interfaz
	echo iface ath0 inet dhcp >> $interfaz
	echo wireless_essid ENIGMA >> $interfaz
	echo pre-up wpa_supplicant -B -qq -Dmadwifi -iath0 -c/etc/wpa_supplicant.conf >> $interfaz
	echo post-down killall -q wpa_supplicant >> $interfaz

	# para el resolv.conf
	echo -e nameserver 192.168.2.1"n" >> $dns

	sudo mv interfaces /etc/network/interfaces
	sudo mv resolv.conf /etc/resolv.conf
		
	sudo ifdown eth0
	sudo ifdown ath0
	
	sudo /etc/init.d/networking restart
;;

El caso de conexión a la Wifi de la Universidad es muy simple. Simplemente debéis cambiar del código del caso 3) el wireless-essid y las DNS en nameserver.

3)
	# para el interfaces
	echo auto lo >> $interfaz
	echo -e iface lo inet loopback"n" >> $interfaz

	echo iface ath0 inet dhcp >> $interfaz
	echo -e wireless-essid uconet"n" >> $interfaz
	
	# para el resolv.conf
	echo search uco.es >> $dns
	echo -e nameserver 150.214.110.3"n" >> $dns

	sudo mv interfaces /etc/network/interfaces
	sudo mv resolv.conf /etc/resolv.conf
		
	sudo ifdown eth0
	sudo ifdown ath0
	sudo /etc/init.d/networking restart

	sudo ifup ath0
;;

El caso de conexión a la red Eduroam (que converge muchas universidades y entidades) es algo más complejo pero hay poco que cambiar. Sólo debéis modificar el campo identity="micorreo@uco.es", modificándolo por el correo de vuestra Universidad adscrita a EduRoam, el password="pass-en-claro" en el que ponéis, tal cual, la contraseña de vuestra cuenta de correo y, por último, las DNS de la Universidad en la que estáis modificando el campo nameserver.

4)
	echo auto lo >> $interfaz
	echo -e iface lo inet loopback"n" >> $interfaz

	echo -e "network={" >> $supplicant
	echo -e "ssid="eduroam"" >> $supplicant
	echo -e "key_mgmt=WPA-EAP" >> $supplicant
	echo -e "proto=WPA" >> $supplicant
	echo -e "eap=TTLS" >> $supplicant
	echo -e "anonymous_identity="anonymous@uco.es"" >> $supplicant
	echo -e "identity="micorreo@uco.es"" >> $supplicant
	echo -e "password="pass-en-claro"" >> $supplicant
	echo -e "priority=2" >> $supplicant
	echo -e "phase2="auth=PAP"" >> $supplicant
	echo -e "}" >> $supplicant
	
	sudo rm /etc/wpa_supplicant.conf
	sudo mv wpa_supplicant.conf /etc/wpa_supplicant.conf

	echo -e auto ath0"n" >> $interfaz
	echo iface ath0 inet dhcp >> $interfaz
	echo wireless_essid eduroam >> $interfaz
	echo pre-up wpa_supplicant -B -qq -Dmadwifi -iath0 -c/etc/wpa_supplicant.conf >> $interfaz
	echo post-down killall -q wpa_supplicant >> $interfaz

	# para el resolv.conf
	echo -e nameserver 150.214.110.3"n" >> $dns

	sudo mv interfaces /etc/network/interfaces
	sudo mv resolv.conf /etc/resolv.conf
		
	sudo ifdown eth0
	sudo ifdown ath0
	
	sudo /etc/init.d/networking restart
;;

Eso es todo, aquí os dejo el script de conexión completo. Espero que os sirva a alguno. No olvidéis darle permisos de ejecución con chmod +x conexion.

ADVERTENCIA: A veces, se pelea con Network Manager. Yo incluso he eliminado Network Manager y me conecto con mi script. Cuando estoy cerca de una nueva red, simplemente copio y pego un caso y modifico los parámetros de la nueva red y ya tengo otra opción más. Actualmente voy por 6 opciones.

P.D: El nombre del post es tan largo y raro para que los motores de búsqueda hagan de las suyas 😛 😉

Neonigma

Sé el primero en valorar positivamente

2 pensamientos en “Script de conexión a redes Wifi con WPA, a LAN mediante cable e IP, a Eduroam y a la UCO (sin Network Manager)

  1. Al fin voy a disponer de ese material! jajaja. Ya le echaré un vistazo y lo ajustaré a mis necesidades. Muchas gracias por esta gran contribución 😀

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *