
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:
Quiero obtener la información mediante el comando xmlstarlet que es especial para consultar archivos XML, lo hago de esta forma:
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:
Obtengo esta salida:
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.
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


0