我从一个接收到的SNMP陷阱中设置了一个bash变量,并获得以下输出:
echo $var
Nov 27 16:20:34 witness logger: trap: vars: DISMAN-EVENT-MIB::sysUpTimeInstance = 0:6:10:29.06, SNMPv2-MIB::snmpTrapOID.0 = SNMPv2-SMI::enterprises.11.2.29.2.90.0.10000002, SNMPv2 SMI::enterprises.11.2.29.2.90.1 = "Finished Number", SNMPv2-SMI::enterprises.11.2.29.2.90.2 = "Filter Cirteria: [called='3333']", SNMPv2-SMI::enterprises.11.2.29.2.90.3 = "Cleared", SNMPv2 SMI::enterprises.11.2.29.2.90.4 = "major Over-Flow alert on Finished Number for ['3333']", SNMPv2 SMI::enterprises.11.2.29.2.90.5 = "The Corresponding Metric Value is: 0.5", SNMPv2- SMI::enterprises.11.2.29.2.90.6 = "Over-Flow", SNMPv2-SMI::enterprises.11.2.29.2.90.7 = "Tue Nov 27 16:20:05 CET 2012"
我正在尝试将以下输出存储在变量中:
var1 = "Tue Nov 27 16:20:05 CET 2012"
var2 = "Finished Number"
var3 = "The Corresponding Metric Value is: 0.5"
var4 = "Cleared"
var5 = "major Over-Flow alert on Finished Number for ['3333']"
我正在考虑通过awk来完成这个任务,根据snmp OID:enterprises.11.2.29.2.90.4,enterprises.11.2.29.2.90.5,11.2.29.2.90.6等等来执行。但是似乎无法提取引号中的内容“”。
var2=$var1; var1=$var7; var6=$var5; var5=$var4; var4=$var3; var3=$var6
这一部分留给读者自己完成。 - chorobagrep -o'“[^”]*”'
产生的输出的有用程度相同,当然,您也可以使用类似的awk或ruby脚本生成相同的输出(例如,gawk -v FPAT='"[^"]*"' '{for (i=1;i<=NF;i++) print "var"i"="$i}'
),因此,虽然perl是一个有用的答案,在这种情况下,perl并没有为特定情况带来独特的东西。 - Ed Morton