最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

C#下利用SnmpSharpNet进行snmp开发

IT圈 admin 36浏览 0评论

2024年5月24日发(作者:可安国)

C#下利用SnmpSharpNet进行snmp开发

最近需要在c#下面开发snmp的应用,其实我的需求很简单,就是通过一个oid可以获

得一个值。在网上搜索了 一些,发现很多文章都是 你抄袭我我抄袭你,基本上拷贝下来是

不能运行的,还有的一些利用系统库,有一些用付费的库。

在网上搜索了一下,发现有一个库相当的好用,SnmpSharpNet。官方网站为

/。如果有需要请到官方网站上去下载开源的二进制文件,其

中各个的介绍也相当的全面。在进行开发之前请先导入引用。

在snmp的语句中有两种语句,snmpget/snmpwalk我觉得这两个是我用的最多的,

snmpget就是通过oid进行查找,而snmpwalk可以返回一个组中的数据。下面两段程序演

示了具体怎么使用。

snmpget:源地址:/

using System;

using ;

using SnmpSharpNet;

namespace snmpget

{

class Program

{

static void Main(string[] args)

{

// SNMP community name

OctetString community = new OctetString("public");

// Define agent parameters class

AgentParameters param = new AgentParameters(community);

// Set SNMP version to 1 (or 2)

n = (int)1;

// Construct the agent address object

// IpAddress class is easy to use here because

// it will try to resolve constructor parameter if it

doesn't

// parse to an IP address

IpAddress agent = new IpAddress("127.0.0.1");

// Construct target

UdpTarget target = new UdpTarget((IPAddress)agent, 161, 2000,

1);

// Pdu class used for all requests

Pdu pdu = new Pdu();

("1.3.6.1.2.1.1.1.0"); //sysDescr

("1.3.6.1.2.1.1.2.0"); //sysObjectID

("1.3.6.1.2.1.1.3.0"); //sysUpTime

("1.3.6.1.2.1.1.4.0"); //sysContact

("1.3.6.1.2.1.1.5.0"); //sysName

// Make SNMP request

SnmpV1Packet result = (SnmpV1Packet)t(pdu,

param);

// If result is null then agent didn't reply or we couldn't

parse the reply.

if (result != null)

{

// ErrorStatus other then 0 is an error returned by

// the Agent - see SnmpConstants for error definitions

if (tatus != 0)

{

// agent reported an error with the request

ine("Error in SNMP reply. Error {0}

index {1}",

tatus,

ndex);

}

else

{

// Reply variables are returned in the same order as

they were added

// to the VbList

ine("sysDescr({0}) ({1}): {2}",

[0].ng(),

eName([0].),

[0].ng());

ine("sysObjectID({0}) ({1}): {2}",

[1].ng(),

eName([1].),

[1].ng());

ine("sysUpTime({0}) ({1}): {2}",

[2].ng(),

eName([2].),

[2].ng());

ine("sysContact({0}) ({1}): {2}",

[3].ng(),

eName([3].),

[3].ng());

ine("sysName({0}) ({1}): {2}",

[4].ng(),

2024年5月24日发(作者:可安国)

C#下利用SnmpSharpNet进行snmp开发

最近需要在c#下面开发snmp的应用,其实我的需求很简单,就是通过一个oid可以获

得一个值。在网上搜索了 一些,发现很多文章都是 你抄袭我我抄袭你,基本上拷贝下来是

不能运行的,还有的一些利用系统库,有一些用付费的库。

在网上搜索了一下,发现有一个库相当的好用,SnmpSharpNet。官方网站为

/。如果有需要请到官方网站上去下载开源的二进制文件,其

中各个的介绍也相当的全面。在进行开发之前请先导入引用。

在snmp的语句中有两种语句,snmpget/snmpwalk我觉得这两个是我用的最多的,

snmpget就是通过oid进行查找,而snmpwalk可以返回一个组中的数据。下面两段程序演

示了具体怎么使用。

snmpget:源地址:/

using System;

using ;

using SnmpSharpNet;

namespace snmpget

{

class Program

{

static void Main(string[] args)

{

// SNMP community name

OctetString community = new OctetString("public");

// Define agent parameters class

AgentParameters param = new AgentParameters(community);

// Set SNMP version to 1 (or 2)

n = (int)1;

// Construct the agent address object

// IpAddress class is easy to use here because

// it will try to resolve constructor parameter if it

doesn't

// parse to an IP address

IpAddress agent = new IpAddress("127.0.0.1");

// Construct target

UdpTarget target = new UdpTarget((IPAddress)agent, 161, 2000,

1);

// Pdu class used for all requests

Pdu pdu = new Pdu();

("1.3.6.1.2.1.1.1.0"); //sysDescr

("1.3.6.1.2.1.1.2.0"); //sysObjectID

("1.3.6.1.2.1.1.3.0"); //sysUpTime

("1.3.6.1.2.1.1.4.0"); //sysContact

("1.3.6.1.2.1.1.5.0"); //sysName

// Make SNMP request

SnmpV1Packet result = (SnmpV1Packet)t(pdu,

param);

// If result is null then agent didn't reply or we couldn't

parse the reply.

if (result != null)

{

// ErrorStatus other then 0 is an error returned by

// the Agent - see SnmpConstants for error definitions

if (tatus != 0)

{

// agent reported an error with the request

ine("Error in SNMP reply. Error {0}

index {1}",

tatus,

ndex);

}

else

{

// Reply variables are returned in the same order as

they were added

// to the VbList

ine("sysDescr({0}) ({1}): {2}",

[0].ng(),

eName([0].),

[0].ng());

ine("sysObjectID({0}) ({1}): {2}",

[1].ng(),

eName([1].),

[1].ng());

ine("sysUpTime({0}) ({1}): {2}",

[2].ng(),

eName([2].),

[2].ng());

ine("sysContact({0}) ({1}): {2}",

[3].ng(),

eName([3].),

[3].ng());

ine("sysName({0}) ({1}): {2}",

[4].ng(),

发布评论

评论列表 (0)

  1. 暂无评论