Service icinga,如何将属性传递给check命令

Service icinga,如何将属性传递给check命令,service,attributes,conditional,icinga,Service,Attributes,Conditional,Icinga,我在Icinga中有一个条件规则,用于执行用于检查cas身份验证的脚本。 脚本在返回的页面中使用URL和grep字符串。 URL和字符串是脚本的属性 以下是主机的定义: object Host "m" { address = "1xx.xx7.25" import "linux-server" display_name = "m" vars.curl_casURL = "http://xxx.html" vars.curl_casGREP = "Returned S

我在Icinga中有一个条件规则,用于执行用于检查cas身份验证的脚本。 脚本在返回的页面中使用URL和grep字符串。 URL和字符串是脚本的属性

以下是主机的定义:

 object Host "m" {
  address = "1xx.xx7.25"
  import "linux-server"
  display_name = "m"    
  vars.curl_casURL = "http://xxx.html"
  vars.curl_casGREP = "Returned String"
}
这是服务的代码,只有在主机中定义了两个变量curl_casURL和curl_casGREP时才会执行:

apply Service "cas"  {
  import "generic-service"
  check_command = "cas"
  assign  where (host.vars.curl_casURL && host.vars.curl_casGREP)
}
在web界面中,没关系,我看到脚本是为服务器“m”执行的

命令如下:

object CheckCommand "cas" {
  import "plugin-check-command"
  command = [ PluginDir + "/icinga-curl_cas.sh" ]
  command +=[  vars.curl_casURL + vars.curl_casGREP ]
}
但由于脚本的第一行,脚本从不接收参数并回显临界状态:

if [ ! $1  ]
 then
  echo "GIVE ME AN  URL, PLEASE!"
  exit $STATE_CRITICAL
fi
我在文档中没有找到答案。有人能帮我吗?
谢谢

在您的示例中,访问自定义属性作为运行时宏是错误的:

object CheckCommand "cas" {
  import "plugin-check-command"
  command = [ PluginDir + "/icinga-curl_cas.sh" ]
  command +=[  vars.curl_casURL + vars.curl_casGREP ]
}
使用CheckCommand询问如何将自定义属性作为命令属性访问,这几乎不需要了解运行时宏及其值,当然也不需要了解命令参数语法

由于您使用的是一个没有任何键的有序参数列表,因此我只想用丑陋的方式将自定义属性值作为运行时宏字符串添加到数组中

object CheckCommand "cas" {
  import "plugin-check-command"
  command = [ PluginDir + "/icinga-curl_cas.sh", "$curl_casURL$", "$curl_casGREP$" ]
}
宏解析程序将自动查找所需的值,它们是否定义为CheckCommand、主机对象或使用CheckCommand的服务上的默认值并不重要

尽管我建议在脚本中使用带有参数和值的GetOpts(更好的可读性和值的位置在以后的更改中无关紧要)

使用命令参数是非常简单的。它还允许您添加一个参数描述,这在以后可能会有所帮助(并通过2.4中的API检索)


非常感谢。你节省了我的时间!我用第二种方法。我查看了icinga文档,没有找到正确的丑陋方式语法!在本例中,while-getopts的良好语法是:
while-getopts“u:g:”opt;执行
while getopts "u:g:" opt; do
  case $opt in
    u)
      URL=$OPTARG
      ;;
    g)
      GREP=$OPTARG
      ;;
    [....]
    \?)
      echo "Invalid option: -$OPTARG" >&2
      exit 1
      ;;
    :)
      echo "Option -$OPTARG requires an argument." >&2
      exit 1
      ;;
  esac
done
object CheckCommand "cas" {
  import "plugin-check-command"
  command = [ PluginDir + "/icinga-curl_cas.sh" ]

  arguments = {
    "-u" = {
      value = "$curl_casURL$"
      description = "URL for curl"
    }
    "-g" = {
      value = "$curl_casGREP$"
      description = "GREP for curl"
    }
  }
}