嘿,我正在制作一个Nagios插件,旨在允许与perfdata进行复杂的比较。
这个想法是将比较字符串作为参数传递,然后使用它来提供状态。
check_vmstat «display» [-o «output vars»] [-w «warning expr.»] [-c «critical expr.»] -d «delay»
表达式是boolean expr。用变量名称。例如:
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»将使用这样的术语。
你会怎么做?
答案 0 :(得分: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"
}