Linux/Unix Shell Scripting - Filtrar resultados xmlstarlet

 
Vista:
sin imagen de perfil

Filtrar resultados xmlstarlet

Publicado por Daniel (2 intervenciones) el 17/01/2014 15:49:39
Hola a todos

Estoy haciendo un script para automatizar algunos procesos de mi trabajo. En esta oportunidad necesito obtener las direcciones MAC de ciertos equipos para luego encenderlos con WOL. Esta información es variable y se encuentra en un archivo XML como este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0"?>
<pfsense>
        <wol>
                <wolentry>
                        <interface>lan</interface>
                        <mac>f1:60:12:8b:33:6e</mac>
                        <descr><![CDATA[pc-05]]></descr>
                </wolentry>
                <wolentry>
                        <interface>lan</interface>
                        <mac>02:1d:80:77:dd:a8</mac>
                        <descr><![CDATA[pc-08]]></descr>
                </wolentry>
                <wolentry>
                        <interface>lan</interface>
                        <mac>30:85:a9:1a:33:12</mac>
                        <descr><![CDATA[pc-12]]></descr>
                </wolentry>
        </wol>
</pfsense>

Quiero obtener la información mediante el comando xmlstarlet que es especial para consultar archivos XML, lo hago de esta forma:

1
xmlstarlet sel -t -m "pfsense" -m wol -m wolentry[descr=pc-08] -v mac < datos.xml

Pero no me entrega nada como salida, yo espero que me entregue la correspondiente mac del equipo pc-08: 02:1d:80:77:dd:a8

Por otro lado si ejecuto el comando sin especificar el filtro:
1
xmlstarlet sel -t -m "pfsense" -m wol -m wolentry -v mac < datos.xml

Obtengo esta salida:
1
f1:60:12:8b:33:6e02:1d:80:77:dd:a830:85:a9:1a:33:12

Todas las mac, con eso presumo que en general el comando está bien escrito pero algo anda mal en el filtro por valor.

Por favor evítense la molestia de indicarme como se podría hacer con otro lenguaje o usando un divertido y largo ciclo FOR que recorra el archivo y todo eso, el objetivo de mi pregunta es aprender a usar xmlstarlet (u otro comando alternativo de consulta XML) para futuros proyectos, pues me ahorraría tiempo de programación.

Se agradecen su respuestas.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder