2011-06-08 43 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

我會構建一個解析器來解析文件中的語法,以便能夠像數組一樣在更易訪問的數據結構中顯示相同的數據。

根據文件的大小,數組可以存儲額外的信息,如偏移量等。然而,在解析器旁編寫一個可將該數組結構轉儲迴文件的傾卸器更容易。所以每次整個文件被重寫,但實際的數據。

然後,您可以輕鬆地在陣列結構上執行添加和刪除操作,同時注意讀取和寫入文件的工作原理。

所以你分離了彼此的問題。