SharpSnmpLib 发送陷阱

SharpSnmpLib SendTrap

我用 C# 创建了这个按钮:

private void sendTrapBtn_Click(object sender, EventArgs e)
{
    Messenger.SendTrapV1(new IPEndPoint(IPAddress.Parse("172.29.16.200"), 162), 
             IPAddress.Parse("172.29.16.203"), // my machine 
             new OctetString("MNTCORPRD"),
             new ObjectIdentifier("1.3.6.1.4.1.791"), 
             0, 
             0, 
             0, 
             new List<Variable>());
}

我可以看到我可以选择提交者 IP、目标 IP、SNMP 社区字符串、企业 OID、通用 OID、特定 OID,但我不知道如何使用变量列表来放置嵌入的 OID一些信息,例如:

OID: 1.3.6.1.4.1.791.0.1.4.1 Type: Integer Data: 2345
OID: 1.3.6.1.4.1.791.0.1.4.2 Type: String Data: "DB Error occurred"

收到的陷阱示例。

Trap identifier 1.3.6.1.4.1.791.2.10.2.90.6.1
Trap var bind data: 
OID: 1.3.6.1.4.1.791.2.10.2.90.0 Value: application Process
OID: 1.3.6.1.4.1.791.2.10.2.90.1 Value: Cluster.exe
OID: 1.3.6.1.4.1.791.2.10.2.90.2 Value: Running

我该怎么做?一个例子就够了!

我通过自己的测试找到了答案,我会分享这些知识!

要在陷阱中创建一个 varbind 变量,您需要先创建一个 Lextm.SharpSnmpLib.Variable。

创建列表并发送陷阱后。

Lextm.SharpSnmpLib.Variable oid = new Lextm.SharpSnmpLib.Variable(new ObjectIdentifier("1.3.6.1.4.1.9999.0.0.1"),new OctetString("Cluster.exe"));

List<Variable> oidList = new List<Variable>();

oidList.Add(oid);

Messenger.SendTrapV1(new IPEndPoint(IPAddress.Parse("172.29.16.200"), 162),
                     IPAddress.Parse("172.29.16.20"), // my machine 
                     new OctetString("MNTCORPR"),
                     new ObjectIdentifier("1.3.6.1.4.1.9999"), 
                     0, 
                     0, 
                     0, 
                     oidList);