<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    宏如何使用

    巨集

    使Nagios如此靈活的主要功能之一是能夠在命令定義中使用宏。宏允許您在命令中引用來自主機,服務和其他來源的信息。

    宏替換-宏如何工作

    在Nagios Core執行命令之前,它將使用相應的值替換在命令定義中找到的所有宏。此宏替換發生在Nagios執行的所有類型的命令上-主機和服務檢查,通知,事件處理程序等。

    某些宏本身可能包含其他宏。其中包括$ HOSTNOTES $,$ HOSTNOTESURL $,$ HOSTACTIONURL $,$ SERVICENOTES $,$ SERVICENOTESURL $和$ SERVICEACTIONURL $宏。

    示例1:主機地址宏

    當您在命令定義中使用主機和服務宏時,它們指的是為其運行命令的主機或服務的值。讓我們嘗試一個例子。假設我們使用主機定義和如下定義的check_ping命令:

    定義主機{
    host_name linuxbox
    地址 192.168.1.2
    check_command check_ping

    }
    ?
    定義命令{
    command_name check_ping
    command_line / usr / local / nagios / libexec / check_ping -H $ HOSTADDRESS $ -w 100.0,90%-c 200.0,60%
    }

    要為主機的check命令執行的擴展/最終命令行如下所示:

    / usr / local / nagios / libexec / check_ping -H 192.168.1.2 -w 100.0,90%-c 200.0,60%

    這樣做的好處是,您可以使用單個命令定義來檢查無限數量的主機。可以使用相同的命令定義檢查每個主機,因為在執行之前,會在命令行中自動替換每個主機的地址。

    示例2:命令參數宏

    您也可以將參數傳遞給命令,如果您想保持命令定義的通用性,這將非常方便。在對象(即主機或服務)定義中指定參數,方法是使用感嘆號(!)將它們與命令名稱分開,如下所示:

    定義服務{
    host_name linuxbox
    service_description PING
    check_command check_ping!200.0,80%!400.0,40%

    }

    在上面的示例中,服務檢查命令具有兩個參數(可以使用$ ARGn $宏進行引用)。$ ARG1 $宏將為“ 200.0,80% ”,而$ ARG2 $宏將為“ 400.0,40% ”(均不帶引號)。假設我們使用前面給出的主機定義和如下定義的check_ping命令:

    定義命令{
    command_name check_ping
    命令行/ usr / local / nagios / libexec / check_ping -H $ HOSTADDRESS $ -w $ ARG1 $ -c $ ARG2 $
    }

    要為服務的check命令執行的擴展/最終命令行如下所示:

    / usr / local / nagios / libexec / check_ping -H 192.168.1.2 -w 200.0,80% -c 400.0,40%

    提示:如果需要在命令參數中傳遞bang(!)字符,可以通過使用反斜杠(\)對其進行轉義來實現。如果需要在命令參數中包含反斜杠,則也應使用反斜杠對它們進行轉義。

    按需宏

    通常,當您在命令定義中使用主機和服務宏時,它們指的是為其運行命令的主機或服務的值。例如,如果正在為名為“ linuxbox”的主機執行主機檢查命令,則所有標準主機宏都將引用該主機(“ linuxbox”)的值。

    如果要在命令中(對于該命令未運行)引用其他主機或服務的值,則可以使用所謂的“按需”宏。按需宏看起來像普通宏,不同之處在于它們包含主機或服務的標識符,并從中獲取其值。這是按需宏的基本格式:

    • $ HOSTMACRONAMEhost_name $

    • $ SERVICEMACRONAME主機名service_description $

    HOSTMACRONAMESERVICEMACRONAME替換為在此處找到的標準服務宏主機之一的名稱。

    請注意,宏名稱由冒號(:)與主機或服務標識符分隔。對于按需服務宏,服務標識符包括主機名和服務描述-它們也用冒號(:)分隔。

    提示:按需服務宏可以包含一個空的主機名字段。在這種情況下,將自動使用與服務關聯的主機名。

    按需主機和服務宏的示例如下:

    $ HOSTDOWNTIME:myhost $ <—點播主機宏
    $ SERVICESTATEID:novellserver:DS Database $ <—按需服務宏
    $ SERVICESTATEID :: CPU Load $ <—主機名字段為空的按需服務宏

    按需宏也可用于主機組,服務組,聯系人和聯系人組宏。例如:

    $ CONTACTEMAIL:john $ <—點播聯系人宏
    $ CONTACTGROUPMEMBERS:linux-admins $ <—按需聯系人組宏
    $ HOSTGROUPALIAS:linux-servers $ <—按需主機組宏
    $ SERVICEGROUPALIAS:DNS群集$ <—按需服務組宏

    按需組宏

    通過為按需宏聲明使用特殊格式,可以獲取特定組中所有聯系人,主機或服務之間的宏值。通過在按需宏中引用特定的主機組,服務組或聯系人組名稱來執行此操作,如下所示:

    • $ HOSTMACRONAMEhostgroup_name分隔符 $

    • $ SERVICEMACRONAMEservicegroup_name分隔符 $

    • $ CONTACTMACRONAMEcontactgroup_name定界符 $

    HOSTMACRONAMESERVICEMACRONAMECONTACTMACRONAME替換為在此處找到的標準主機,服務或聯系宏之一的名稱。您指定的定界符用于分隔每個組成員的宏值。

    例如,以下宏將返回以逗號分隔的hg1主機組成員主機的主機狀態ID列表:

    $ HOSTSTATEID:hg1:,$

    此宏定義將返回如下所示的內容:

    0,2,1,1,0,0,2

    自定義變量宏

    您在主機,服務或聯系人定義中定義的 任何自定義對象變量也可用作宏。自定義變量宏的命名如下:

    • $ _HOST 變量名 $

    • $ _Service VARNAME $

    • $ _CONTACT VARNAME $

    使用名為“ _MACADDRESS”的自定義變量獲取以下主機定義…

    定義主機{
    host_name linuxbox
    地址192.168.1.1
    _MACADDRESS 00:01:02:03:04:05

    }

    _MACADDRESS自定義變量將在名為$ _HOSTMACADDRESS $的宏中可用。有關自定義對象變量以及如何在宏中使用它們的更多信息,請參見此處

    宏觀清潔

    在將某些宏替換為要執行的命令之前,會刪除一些潛在危險的外殼元字符。從宏中剝離哪些字符取決于非法_輸出字符指令的設置。以下宏被去除了潛在危險的字符:

    此外,為安全起見,所有包含自定義變量的宏也會被剝離。

    宏作為環境變量

    大多數宏都可以用作環境變量,以方便Nagios Core執行的腳本或命令進行引用。出于安全和理智的目的,$用戶N $和“按需定制”的主機和服務宏沒有可用的環境變量。

    包含標準宏的環境變量的名稱與其對應的宏名稱相同(在此處列出),名稱前帶有“ NAGIOS_”。例如,$ HOSTNAME $宏可以作為名為“ NAGIOS_HOSTNAME”的環境變量使用。

    可用的宏

    此處可以找到Nagios Core中可用的所有宏的列表以及使用時間的圖表。

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类