如何使用字符串操作 check_snmp 输出
How to manipulate check_snmp output with string
运行 这个命令:
/usr/lib/nagios/plugins/check_snmp '-C' 'public' '-H' '10.1.1.1' '-l' 'haState' '-o' '.1.3.6.1.4.1.2620.1.5.6.0'
产生这个:
SNMP OK - haState "active" |
我想将此命令通过管道传递给将输出以下内容的内容:
SNMP OK - haState "active" | state=active
我想我需要以某种方式在 sed 中使用 awk。
想法?
将检查输出存储在变量中,通过正则表达式匹配提取状态,并使用printf
格式化并打印所需的输出。
regex='haState "(.*)"$'
snmp_output=$(/usr/lib/nagios/plugins/check_snmp '-C' 'public' '-H' '10.1.1.1' '-l' 'haState' '-o' '.1.3.6.1.4.1.2620.1.5.6.0')
if [[ $? == 0 ]]; then
state="unknown"
if [[ "$snmp_output" =~ $regex ]]; then
state="${BASH_REMATCH[0]}"
fi
printf "%s state=$state\n" "$snmp_output"
else
: handle the error appropriately
fi
对 GNU Awk
进行 pipe-line 调用以实现该目的,
echo 'SNMP OK - haState "active" |' | awk '{printf "%s state=%s\n",[=10=],gensub(/"/, "", "g",$(NF-1))}'
SNMP OK - haState "active" | state=active
即
<snmp-command> | awk '{printf "%s state=%s\n",[=11=],gensub(/"/, "", "g",$(NF-1))}'
运行 这个命令:
/usr/lib/nagios/plugins/check_snmp '-C' 'public' '-H' '10.1.1.1' '-l' 'haState' '-o' '.1.3.6.1.4.1.2620.1.5.6.0'
产生这个:
SNMP OK - haState "active" |
我想将此命令通过管道传递给将输出以下内容的内容:
SNMP OK - haState "active" | state=active
我想我需要以某种方式在 sed 中使用 awk。
想法?
将检查输出存储在变量中,通过正则表达式匹配提取状态,并使用printf
格式化并打印所需的输出。
regex='haState "(.*)"$'
snmp_output=$(/usr/lib/nagios/plugins/check_snmp '-C' 'public' '-H' '10.1.1.1' '-l' 'haState' '-o' '.1.3.6.1.4.1.2620.1.5.6.0')
if [[ $? == 0 ]]; then
state="unknown"
if [[ "$snmp_output" =~ $regex ]]; then
state="${BASH_REMATCH[0]}"
fi
printf "%s state=$state\n" "$snmp_output"
else
: handle the error appropriately
fi
对 GNU Awk
进行 pipe-line 调用以实现该目的,
echo 'SNMP OK - haState "active" |' | awk '{printf "%s state=%s\n",[=10=],gensub(/"/, "", "g",$(NF-1))}'
SNMP OK - haState "active" | state=active
即
<snmp-command> | awk '{printf "%s state=%s\n",[=11=],gensub(/"/, "", "g",$(NF-1))}'