如何使用字符串操作check_snmp输出



运行以下命令:

/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。

想法?

GNU Awk进行管道线调用以实现此目的,

echo 'SNMP OK - haState "active" |' | awk '{printf "%s state=%sn",$0,gensub(/"/, "", "g",$(NF-1))}'
SNMP OK - haState "active" | state=active

<snmp-command> | awk '{printf "%s state=%sn",$0,gensub(/"/, "", "g",$(NF-1))}'

将检查输出存储在变量中,通过正则表达式匹配提取状态,并使用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=$staten" "$snmp_output"
else
  : handle the error appropriately
fi

相关内容

  • 没有找到相关文章

最新更新