【问题标题】:bash arguments as variablesbash 参数作为变量
【发布时间】:2014-09-06 02:00:55
【问题描述】:

嘿,我正在开发一个 Nagios 插件,该插件旨在允许与 perfdata 进行复杂的比较。

这个想法是将一个比较字符串作为参数传递,然后使用它来给出状态。

check_vmstat «display» [-o «output vars»] [-w «warning expr.»] [-c «critical expr.»] -d «delay»

表达式是布尔表达式。带有变量名称。例如:

check_vmstat cpu_us,memory_free,memory_swpd -w (((cpu_us>80)&&(memory_free<20))||((memory_swpd>5)&&(memory_free<50))) -c *>90

«display» 和 «output_variables» 也将使用这样的命名法。

你会怎么做?

【问题讨论】:

    标签: bash shell parsing nagios


    【解决方案1】:

    首先,您必须引用条件,以免在当前 shell 中评估它们

    选项解析左侧作为练习:

    warn='(((cpu_us>80)&&(memory_free<20))||((memory_swpd>5)&&(memory_free<50))) '
    vmstat 1 2 | 
    tail -n 1 | 
    { 
        read _ _ memory_swapd memory_free _ _ _ _ _ _ _ _ cpu_us _ _ _
        eval "(( $warn )) && echo WARNING"
    }
    

    【讨论】:

      猜你喜欢
      • 2021-09-29
      • 2021-03-04
      • 2018-05-25
      • 2021-12-01
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      相关资源
      最近更新 更多