elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Bash] Asignar una variable a cada output
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Bash] Asignar una variable a cada output  (Leído 1,959 veces)
vk496

Desconectado Desconectado

Mensajes: 205


Ver Perfil
[Bash] Asignar una variable a cada output
« en: 7 Septiembre 2013, 20:42 pm »

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
Código:
ip link | awk '/</ { print $2 }' | awk -F: '!/lo/ {print $1}'
imprimo todas las tarjetas de red (esta es la salida):

Citar
eth0
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


En línea

-Myx-

Desconectado Desconectado

Mensajes: 39



Ver Perfil
Re: [Bash] Asignar una variable a cada output
« Respuesta #1 en: 8 Septiembre 2013, 01:28 am »

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
  1. for my_interface in `ip link | awk '/</ { print $2 }' | awk -F: '!/lo/ {print $1}'`; do
  2.    echo $my_interface
  3. done
  4.  

Esto tambien puede serte util:

Código
  1. for i in /sys/class/net/*/address; do grep -H '.*' $i; done


En línea

vk496

Desconectado Desconectado

Mensajes: 205


Ver Perfil
Re: [Bash] Asignar una variable a cada output
« Respuesta #2 en: 8 Septiembre 2013, 13:54 pm »

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


Código:
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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines