[Bash] Asignar una variable a cada output

Iniciado por vk496, 7 Septiembre 2013, 20:42 PM

0 Miembros y 1 Visitante están viendo este tema.

vk496

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

-Myx-

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

Código (bash) [Seleccionar]

for my_interface in `ip link | awk '/</ { print $2 }' | awk -F: '!/lo/ {print $1}'`; do
    echo $my_interface
done


Esto tambien puede serte util:

Código (bash) [Seleccionar]
for i in /sys/class/net/*/address; do grep -H '.*' $i; done

vk496

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