因此,我们的警报平台生成基于SNMP MIB的专有代码。如果你不熟悉SNMP,不要担心,这个问题只是切线相关。代码最终看起来像这样:
case ".1.3.6.1.4.1.5555": ## This is the OID for that specific device type, this switch/case began in the main file.
switch ($specific-trap): {
case "10": ## The specific alarm
# Alarm-specific code
@Identifier = $enterprise + "." + $specific-trap
case "11": ## A different alarm
# Alarm-specific code
@Identifier = $enterprise + "." + $specific-trap
case "12": ## A different alarm
# Alarm-specific code
@Identifier = $enterprise + "." + $specific-trap
case "20": ## clears specific-trap 10
# Alarm-specific code
@Identifier = $enterprise + "." + $specific-trap
case "21": ## clears 11
# Alarm-specific code
@Identifier = $enterprise + "." + $specific-trap
case "22": ## clears 12
# Alarm-specific code
@Identifier = $enterprise + "." + $specific-trap
default:
## what happens if the alarm isn't found
}
我需要做的是使用警报并清除@Identifier(唯一键),因此它们会相互覆盖。因此,例如,第一种情况应如下所示:
case "10": ## The specific alarm
# Alarm-specific code
@Identifier = $enterprise + ".10-20"
和“20”的情况将设置相同。
我通常只是浏览文件并手工编辑这些文件,但如果有数百个陷阱,这可能会变得乏味。我错过了一些我可以做到的简单的VI技巧吗?我想到的一切都行不通,因为$ specific-trap值与@Identifier不在同一行。
我考虑过编写一个Perl脚本来处理它,但我很懒。我认为可能有一些VI魔术可以轻松实现。