SharpSnmpLib SendTrap

时间:2015-09-04 23:26:33

标签: c# snmp sharp-snmp snmp-trap

我在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,但我不知道如何使用变量List来嵌入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

我怎么能这样做?一个例子就足够了!

1 个答案:

答案 0 :(得分:2)

我发现答案是我自己做的测试,我将分享这些知识!

要在陷阱中创建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);