バックグラウンドで実行され、すべてのトラップをファイルに記録する snmptrapd デーモンがあり、そのログを perl プログラムで解析しようとしています。
SNMP v2c トラップは次のように記録されています。
SNMPv2[**]2013-11-4[**]13:16:49[**]UDP: [127.0.0.1]:57819->[127.0.0.1][**].1.3.6.1.6.3.1.1.4.1.0 = OID: .1.3.6.1.4.1.8072.2.3.0.1 .1.3.6.1.4.1.8072.2.3.2.1 = INTEGER: 30 .1.3.6.1.4.1.8072.2.3.2.2 = STRING: lol
正規表現を使用して OID とリモート IP アドレスを正常に解析しましたが、残りのすべてのトラップ値を解析できません。それらは:
.1.3.6.1.4.1.8072.2.3.2.1 = INTEGER: 30 .1.3.6.1.4.1.8072.2.3.2.2 = STRING: lol
構文は簡単に思えます: TRAP_STUFF = TYPE: VALUE が 0 回以上繰り返されます。
問題は、このすべての情報を取得できる正規表現はどれかということです。