Obtener las direcciones MAC de las tarjetas inalámbricas de portátiles usando el inventario de puppet | Algo de Linux

miércoles, 17 de junio de 2015

Obtener las direcciones MAC de las tarjetas inalámbricas de portátiles usando el inventario de puppet

Vamos a ver un ejemplo de combinación de comandos para obtener las direcciones MAC de las tarjetas inalámbricas de portátiles usando el inventario de puppet y de paso, utilizamos el comando sed como explicamos en el post anterior para quitar las comillas entre las que viene la dirección MAC. 

Para empezar, debemos saber que el servidor puppet guarda un inventario de los facts con un fichero por máquina en el directorio /var/lib/puppet/yaml/facts/.

Si hacéis un ls, podréis comprobarlo:
# ls /var/lib/puppet/yaml/facts/
Con ésto, obtendréis un listado de todos los ficheros de inventario de cada equipo. Los nombres de estos ficheros tendrán la siguiente forma:

nombre.dominio.yaml 

En mi centro tengo nombrados los portátiles de alumnos de la misma manera que nombramos terminales: a01-o01, a01-o02, etc... De este modo, si quiero listar los ficheros de portátiles del aula a01, no tengo más que ejecutar el comando de forma que liste tan sólo los archivos que comienzan por "a01-":
# ls /var/lib/puppet/yaml/facts/a01-*
Bien. Si ahora combinamos nuestro comando con un grep que busque dentro de cada fichero la cadena "macaddress_wlan0":
# ls /var/lib/puppet/yaml/facts/a01-* | xargs grep "macaddress_wlan0"
Obtendremos un listado con el nombre de cada fichero y la MAC:
a01-o01.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:3c:5b"
a01-o02.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:3b:0f"
a01-o03.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:39:2f"
a01-o04.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:3e:cb"
a01-o05.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:2c:2d"
a01-o06.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:2b:e0"
a01-o07.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:43:97"
a01-o08.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:1e:4f"
a01-o09.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:1c:e2"
a01-o10.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:37:37"
a01-o11.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:2b:93"
a01-o12.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:37:b7"
a01-o13.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:3b:9a"
a01-o14.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:38:41"
a01-o15.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:29:6c"
a01-o16.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:21:34"
a01-o17.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:46:69"
a01-o18.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:21:9f"
a01-o19.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:3b:01"
a01-o20.valledeljerte3.yaml:    macaddress_wlan0: "74:2f:68:94:1e:42"
Como lo que me interesa del listado anterior es quedarme tan sólo con la dirección MAC, puedo hacer lo siguiente:
# ls /var/lib/puppet/yaml/facts/a01-* | xargs grep "macaddress_wlan0" | awk '{print $3}'
Con lo que me quedaría tan sólo con las direcciones MAC:
"74:2f:68:94:3c:5b"
"74:2f:68:94:3b:0f"
"74:2f:68:94:39:2f"
"74:2f:68:94:3e:cb"
"74:2f:68:94:2c:2d"
"74:2f:68:94:2b:e0"
"74:2f:68:94:43:97"
"74:2f:68:94:1e:4f"
"74:2f:68:94:1c:e2"
"74:2f:68:94:37:37"
"74:2f:68:94:2b:93"
"74:2f:68:94:37:b7"
"74:2f:68:94:3b:9a"
"74:2f:68:94:38:41"
"74:2f:68:94:29:6c"
"74:2f:68:94:21:34"
"74:2f:68:94:46:69"
"74:2f:68:94:21:9f"
"74:2f:68:94:3b:01"
"74:2f:68:94:1e:42"
Si os dáis cuenta, tan sólo hay un pequeño problemilla fácil de resolver: Que las direcciones MAC se encuentran entre comillas. Para quitarlas, tan sólo tenemos que aplicar el comando sed como os mostré en el post anterior:
# ls /var/lib/puppet/yaml/facts/a01-* | xargs grep "macaddress_wlan0"| awk '{print $3}' | sed 's/^.\|.$//g'
Y listo. Ya tenemos lo que queríamos: El listado de direcciones MAC de los portátiles del aula a01:
74:2f:68:94:3c:5b
74:2f:68:94:3b:0f
74:2f:68:94:39:2f
74:2f:68:94:3e:cb
74:2f:68:94:2c:2d
74:2f:68:94:2b:e0
74:2f:68:94:43:97
74:2f:68:94:1e:4f
74:2f:68:94:1c:e2
74:2f:68:94:37:37
74:2f:68:94:2b:93
74:2f:68:94:37:b7
74:2f:68:94:3b:9a
74:2f:68:94:38:41
74:2f:68:94:29:6c
74:2f:68:94:21:34
74:2f:68:94:46:69
74:2f:68:94:21:9f
74:2f:68:94:3b:01
74:2f:68:94:1e:42
Una vez visto ésto, es muy fácil retocar la combinación de comandos para obtener cualquier otro dato de los equipos.
Publicado por primera vez en http://enavas.blogspot.com.es