2011-06-08 45 views
0

要监控的主机,并与Nagios的一些服务,我们有像编辑文本文件:用PHP努力控制Nagios的

define host{ 
use <template> 
host_name <name> 
alias <alias> 
address <IP> } 

define service{ 
use <template> 
host_name <name> 
service_description <desc> 
check_command <command> } 

我有一个接口,在那里我可以做这样的事情用PHP语言。我有两个函数addServiceNagios($ hostname,$ service,$ command)和addHostNagios($ hostname,$ hostIP),其中信息放置在文件中。现在我遇到了一个大问题:

无论如何,该信息总是被放置。如果主机已经存在,或者服务已经分配给主机。检查主机是否已被定义的最佳方法是什么?如果这些服务是关联的?如果我想擦除与主机相关的服务?提前致谢。

+0

您是否尝试过使用基于PHP的NagiosQL配置编辑器? – lik 2012-08-23 14:19:28

回答

0

我会构建一个解析器来解析文件中的语法,以便能够像数组一样在更易访问的数据结构中显示相同的数据。

根据文件的大小,数组可以存储额外的信息,如偏移量等。然而,在解析器旁编写一个可将该数组结构转储回文件的倾卸器更容易。所以每次整个文件被重写,但实际的数据。

然后,您可以轻松地在阵列结构上执行添加和删除操作,同时注意读取和写入文件的工作原理。

所以你分离了彼此的问题。