[BASH] Script que compruebe si wlan1 esta conectada

Iniciado por lagranladilla, 26 Junio 2013, 22:36 PM

0 Miembros y 2 Visitantes están viendo este tema.

lagranladilla

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!!

-- KiLiaN --

Prueba asi, en bash los espacios en blanco cuentan mucho.

Código (bash) [Seleccionar]
#!/bin/bash

UP=$(sudo ifconfig | grep -o 'eth1')
echo $UP
if [ $UP = eth1 ]; then
     ifconfig wlan1 down
      macchanger -A wlan1 
      ifconfig wlan1 up
fi
Entren al chat de elhacker.net
    
   

@kln13

lagranladilla

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  ;))

-- KiLiaN --

Entren al chat de elhacker.net
    
   

@kln13

lagranladilla

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

lagranladilla

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

lagranladilla

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:

Código (bash) [Seleccionar]
#!/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!

-Myx-

Otra forma de hacer lo mismo:

Código (bash) [Seleccionar]

#!/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