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(),