Benas a todos, estoy conociendo el mundo del bash, y creando un pequeño script para cambiar todas las MAC de mi PC...
Con el comando
ip link | awk '/</ { print $2 }' | awk -F: '!/lo/ {print $1}'
imprimo todas las tarjetas de red (esta es la salida):
Citareth0
wlan0
Ahora me gustaría saber como puedo crear algún tipo de función o algo que le asigne una variable a cada una de las salidas. Algo así como:
var1=eth0
var2=wlan0
...
Luego, tengo que conseguir que un comando pase todas esas variables por el
macchanger (pero eso mas adelante, si sobrevivo a esto :xD )
Espero que alguien me pueda decir si se puede hacer esto, y si es posible... como?
Salu2
Un bucle "for" podria solucionar tu problema. Solo que no va a haber una variable distinta por cada resultado de tu comando. Sino que una sola va a ir cambiando de valor
for my_interface in `ip link | awk '/</ { print $2 }' | awk -F: '!/lo/ {print $1}'`; do
echo $my_interface
done
Esto tambien puede serte util:
for i in /sys/class/net/*/address; do grep -H '.*' $i; done
Gracias, es justo lo que buscaba! ;D
Otra pregunta (si no es mucho que pedir :rolleyes:)
Necesito conseguir que me compruebe que todas las MAC verdaderas son iguales a las que hay en ese momento y poder decidir que hacer si hay alguna interfaz que tenga una MAC distinta... sería eso posible?
Lo he intentado yo, pero solo comprueba 1 por 1 y luego realiza la acción, no las comprueba todas para decidir después..
readarray -t interfaces < <(ip link | grep "<" | cut -d " " -f 2 | cut -d ":" -f 1 | grep -v lo)
total=$(echo ${interfaces[@]} | wc -w)
echo Hay $total en total
echo
for mac in "${interfaces[@]}"; do
perm=$(macchanger -s $mac | grep Permanent | cut -d " " -f 3)
actu=$(macchanger -s $mac | grep Current | cut -d " " -f 5)
done
if [ $perm = $actu ]; then
echo Vamos a cambiar tus MAC porque $perm es igual a $actu
else
echo Vamos a resturar tus MAC porque $perm es distinto a $actu
fi
Espero que alguien me pueda echar una mano...
Salu2