gpt4 book ai didi

regex - 如何使用 Notepad++/RegEx 或其他从主机生成 Nagios 主机组列表

转载 作者:行者123 更新时间:2023-12-01 02:18:48 25 4
gpt4 key购买 nike

我正在使用 Notepad++,我想寻求帮助以实现以下目标。

我有一些(几 1000 行)Nagios/Icinga 配置,如下所示:

define host {
use generic-host
host_name FakeNameA-748-SomeNameA
alias FakeNameA-748-SomeNameA
address 10.1.1.97
}
define host {
use generic-host
host_name H548-AP02
alias H548-AP02
address 172.19.115.190
}
define host {
use generic-host
host_name FakeNameB-302-SomeNameB
alias FakeNameB-302-SomeNameB
address 192.168.149.1
}
define host {
use generic-host
host_name FakeNameC-902-Acronym
alias FakeNameC-902-Acronym
address 192.168.48.1
}
define host {
use generic-host
host_name H902-AP01
alias H902-AP01
address 192.168.48.190
}

我需要创建一些包含所有主机名的主机组,但分为两个组。

像这样:
define hostgroup {
hostgroup_name GroupA
alias GroupA
members FakeNameA-748-SomeNameA,FakeNameB-302-SomeNameB,FakeNameC-902-Acronym
}

define hostgroup {
hostgroup_name GroupB
alias GroupB
members H548-AP02,H902-AP01
}

如您所见,如果“host_name”包含“AP”,则它应该进入 GroupB,其他所有内容都应进入 GroupA(注意它们应该用逗号分隔)。

有没有人知道我如何自动化这个?

感谢您的时间 :)

最佳答案

如果您的主机名与示例中的架构匹配,您可以使用 Nagios 附带的正则表达式匹配动态执行此操作:

nagios.cfg:

use_regexp_matching=1

.
define hostgroup {
hostgroup_name GroupA
members ^[^-]+-[0-9]+-[^-]$
}

define hostgroup {
hostgroup_name GroupB
members ^[^-]+-AP[0-9]+$
}

不幸的是,所使用的正则表达式引擎不支持后视/前瞻,否则可以更容易、更可靠地实现。实际上,您必须为所讨论的两个组找到与一组匹配但不匹配另一组的表达式。

附带说明一下,您为什么要设置与主机名相同的别名?

关于regex - 如何使用 Notepad++/RegEx 或其他从主机生成 Nagios 主机组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22197008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com