Estoy intentando mover nuestra configuración PRTG preexistente a una configuración de Nagios. El problema es que actualmente tenemos más de 20.000 monitores, por lo que estoy intentando exportar la información del sensor del archivo .dat a un archivo legible que se pueda mover a otros archivos nagios. El problema es que todavía soy muy nuevo en el mundo de las secuencias de comandos y, aparte de crear una secuencia de comandos que pueda dividir el archivo para que bash no se elimine, todos los intentos han fallado. Intenté utilizar un guión que otra persona había escrito, pero no creo que funcione para lo que necesito.
Necesito extraer la siguiente información. Todo entre host***/host y nombre***/nombre.
Si alguien pudiera al menos indicarme la dirección en la que podría descubrir cómo escribir algo que me permitiera extraer una variedad de texto, eso también funcionaría. :)
Ejemplo:
<host>
10.0.0.0
</host>
<name>
This is a Business
</name>
Tenga en cuenta que este archivo de configuración que estoy usando es un archivo .dat que tiene un tamaño de casi un giga.
<?xml version="1.0" encoding="UTF-8"?>
<root version="15" oct="PRTG Network Monitor 17.2.31.1917 x64"
saved="5/12/2017 4:36:26 PM" max="184692" guid="{3A6843F2-61BB-47EA-8EB2-
B2E62E24EF2F}" treeversion="0" created="2009-10-02-19-22-11"
<statistics time="12-05-2017 16:09:19">
Respuesta1
Utilice un analizador XML comoXMLStarlet:
$ xmlstarlet sel -t -v '//host' -v '//name' file.xml
Esto extraería el contenido de cualquiera <host>
o <name>
nodo en cualquier parte del file.xml
documento XML.
Es probable que XMLStarlet esté disponible a través de su administrador de paquetes habitual. A veces el ejecutable se llama xmlstarlet
en lugar de simplemente xml
.