2014-09-06 5 views
0

Эй, я работаю над плагином Nagios, который позволяет разрешать сложные сравнения с пердтатами.аргументы bash как переменные

Идея состоит в том, чтобы передать в качестве аргумента строку сравнения, а затем работать с ней, чтобы дать статус.

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 

также «дисплей» и «output_variables» будут использовать такую ​​номенклатуру.

Как вы это сделаете?

ответ

1

Во-первых, вы должны процитировать условия, чтобы они не были оценены в текущей оболочке

вариант синтаксического анализа в качестве упражнения:

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" 
} 
Смежные вопросы