Я пытаюсь перенести нашу предыдущую настройку PRTG в настройку Nagios. Проблема в том, что у нас сейчас более 20 тыс. мониторов, поэтому я пытаюсь экспортировать информацию о датчиках из файла .dat в читаемый файл, который можно переместить в ряд других файлов nagios. Проблема в том, что я все еще новичок в написании скриптов, и, кроме создания скрипта, который может разделить файл, чтобы bash не убивал себя, все попытки потерпели неудачу. Я пытался использовать скрипт, написанный кем-то другим, но не думаю, что он подойдет для того, что мне нужно.
Мне нужно извлечь следующую информацию: Все между host***/host и name***/name
Если бы кто-нибудь хотя бы указал мне направление, в котором я мог бы разобраться, как написать что-то, что позволило бы мне извлечь диапазон текста, это тоже сработало бы. :)
Пример:
<host>
10.0.0.0
</host>
<name>
This is a Business
</name>
Имейте в виду, что используемый мной файл конфигурации — это файл .dat размером почти в гигабайт.
<?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">
решение1
Используйте XML-парсер, напримерXMLStarlet:
$ xmlstarlet sel -t -v '//host' -v '//name' file.xml
Это позволит извлечь содержимое любого <host>
узла <name>
в любом месте file.xml
XML-документа.
XMLStarlet, скорее всего, доступен через ваш обычный менеджер пакетов. Исполняемый файл иногда называется xmlstarlet
не просто xml
.