0

因此,我们的警报平台生成基于 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 魔法可以轻松做到这一点。

4

0 回答 0