Hola!
hacia mucho tiempo que no realizava un Script en bash y ahora quiero realizar algo muy sencillo pero que no acabo de encontrarle solucion!.
La idea seria poner un script al inicio del sistema que compruebe si mi tarjeta wifi (wlan1), q va por USB y es externa esta conectada al ordenador.
En el caso de que lo este se le cambiaria la MAC:
#!/bin/bash
UP=$(ifconfig | grep -o 'wlan1')
if ["$UP"="wlan!"]; then
ifconfig wlan1 down
macchanger -A wlan1
ifconfig wlan1 up
fi
Me da error en la linea donde llamo al if, me dice lo siguiente:
[wlan1=wlan1]: orden no encontrada
Creo que estoy haciendo algo mal... si wlan1 esta connectada entonces UP devuelve wlan1 no?
creo que la estoy liando y deberia ser mucho mas sencillo
Gracias de antemanooo!!
Prueba asi, en bash los espacios en blanco cuentan mucho.
#!/bin/bash
UP=$(sudo ifconfig | grep -o 'eth1')
echo $UP
if [ $UP = eth1 ]; then
ifconfig wlan1 down
macchanger -A wlan1
ifconfig wlan1 up
fi
Bien! era eso!! ;-)
Ahora el script se ejecuta pero a la hora de cambiar la MAC, la consola devuelve:
Permanent MAC: 48:02:##:##:##:## (unknown)
Current MAC: 48:02:##:##:##:## (unknown)
ERROR: Can't change MAC: interface up or not permission: Invalid argument
He intentado cambiar la MAC de la interficie realizando los comandos uno a uno como sudo a traves del terminal y me da el mismo error... A que se puede deber?? Podria ser alguna clase de incompatibilidad del Macchanger?? yo nunca he oido que puda acurrir...
pd: (las "#" las pongo yo, en el ordenador me aparece la MAC correctamente ;))
Lo ejecutas con sudo?
Si!
esta en /home/"user"/Escritorio y se llama S99mac ya que luego pensaba ponerlo en la carpeta /etc/rc2.d
lo ejecuto como sudo ./S99mac
:S
tambien si escribo, dice:
sudo ifconfig wlan1 hw ether AA:AA:AA:AA:AA:AA
SIOCSIFHWADDR: Argumento inválido
con el wlan0 me funciona tanto el script como los comandos.. La tarjeta wlan1 es nueva, es una wifisky con un chipset ralink 3070
bien, finalmente probando con otra entena (wisacom con chipset realtek 8187L), el script me funciona perfectamente con lo que deduzco que el problema viene del chipset o de la misma antena... He probado tambien con otros sistemas (wifislax, kali linux...) y el problema persiste.
Dejo el script final por si alguien quisiera usarlo:
#!/bin/bash
# wlan0 & eth0
ifconfig eth0 down
ifconfig wlan0 down
macchanger -A eth0
macchanger -A wlan0
ifconfig eth0 up
ifconfig wlan0 up
# wlan1 y 2, dispositivos externos (si existe)
UP=$(ifconfig | grep -o 'wlan1')
UP2=$(ifconfig | grep -o 'wlan2')
if [ "$UP" = wlan1 ]; then
ifconfig wlan1 down
macchanger -A wlan1
ifconfig wlan1 up
fi
if [ "$UP2" = wlan2 ]; then
ifconfig wlan2 down
macchanger -A wlan2
ifconfig wlan2 up
fi
#fin del script
Para poner el Script al inicio de sessión uno de los metodos seria copiarlo en la carpeta /etc/rc2.d y nombrarlo S99mac (con permisos de ejecucion).
salud!
Otra forma de hacer lo mismo:
#!/bin/bash
for interface in /sys/class/net/*; do
[[ $interface = 'lo' ]] && continue
ifconfig "$interface" down
macchanger -A "$interface"
ifconfig "$interface" up
done
Tambien se puede jugar con udev para hacer lo mismo...creo
http://www.reactivated.net/writing_udev_rules.html