zoukankan      html  css  js  c++  java
  • 用AdventNet SNMP API获取SNMP表信息(C#)

    用AdventNet SNMP API获取SNMP表信息(C#)

    用AdventNet SNMP API获取SNMP表信息(C#)

     

    using System;

    using adventnet.snmp.snmp2;

    public class snmpget

    {

        [STAThread]

        public static void Main(System.String[] args)

        {

     

            // getting the hostname and the OID from the command line

     

            // Start SNMP API

            SnmpAPI api = new SnmpAPI();

            //api.Debug = true;

     

            // Open session

            SnmpSession session = new SnmpSession(api);

            //Build GET Request PDU

            SnmpPDU pdu = new SnmpPDU();

            pdu.Community = "public";

            pdu.WriteCommunity = "jinyun888";

            System.String remoteHost = "211.101.116.112";

            UDPProtocolOptions option = new UDPProtocolOptions(remoteHost);

            pdu.ProtocolOptions = option;

            pdu.Timeout = 10000;

            pdu.Retries = 3;

            pdu.Command = adventnet.snmp.snmp2.SnmpAPI.GETNEXT_REQ_MSG;

            SnmpOID[] oids = new SnmpOID[3];

            oids[0] = new SnmpOID(".1.3.6.1.4.1.429.1.1.2.1.1.1");

            oids[1] = new SnmpOID(".1.3.6.1.4.1.429.1.1.2.1.1.3");

            oids[2] = new SnmpOID(".1.3.6.1.4.1.429.1.1.2.1.1.4");

           

            for (int i = 0; i < 3; i++)

            {

                pdu.AddNull(oids[i]);

            }

            SnmpOID rootoid = new SnmpOID(".1.3.6.1.4.1.429.1.1.2.1.1.1.");

            String root = rootoid.ToString();

            try

            {

                session.Open();

            }

            catch (SnmpException e)

            {

                System.Console.Error.WriteLine("Error opening socket: " + e);

            }

            // add OIDs

            while (true)

            // until received OID isn't in sub-tree

            {

                try

                {

                    // Send PDU and receive response PDU

                    pdu = session.SyncSend(pdu);

                }

                catch (SnmpException e)

                {

                    System.Console.Error.WriteLine("Sending PDU" + e.Message);

                    System.Environment.Exit(1);

                }

                if (pdu == null)

                {

                    System.Console.Out.WriteLine("Request timed out to: " );

                    System.Environment.Exit(1);

                }

                //check for out index

                if (!(pdu.GetObjectID(0).ToString().StartsWith(root)))

                {

                    break;

                }

                int version = pdu.Version;

                if (version == SnmpAPI.SNMP_VERSION_1)

                {

                    // check for error

                    if (pdu.Errstat != 0)

                    {

                        System.Console.Out.WriteLine("Error Indication in response: " + SnmpException.ExceptionString((sbyte)pdu.Errstat) + "\nErrindex: " + pdu.Errindex);

                        System.Environment.Exit(1);

                    }

                    // print response pdu variable-bindings                   

                    System.Console.Out.WriteLine(pdu.PrintVarBinds());

                }

                else if (version == SnmpAPI.SNMP_VERSION_2C)

                {

                    System.Collections.IEnumerator e = pdu.VariableBindings.GetEnumerator();

                    while (e.MoveNext())

                    {

                        int error = 0;

                        SnmpVarBind varbind = (SnmpVarBind)e.Current;

                        // check for error

                        if ((error = varbind.Errindex) != 0)

                        {

                            System.Console.Out.WriteLine("Error Indication in response: " + SnmpException.ExceptionString((sbyte)error));

                            System.Environment.Exit(1);

                        }

                        // print response pdu variable-bindings

                        System.Console.Out.WriteLine(pdu.PrintVarBinds());

                    }

                }

                else

                {

                    System.Console.Out.WriteLine("Invalid Version Number");

                }

                // set GETNEXT_REQ_MSG to do walk

                // Don't forget to set request id to 0 otherwise next request will fail

                pdu.Reqid = 0;

                pdu.Command = adventnet.snmp.snmp2.SnmpAPI.GETNEXT_REQ_MSG;

            } // end of while true

     

            // close session

            session.Close();

            //close the api thread

            api.Close();

        }

    }

  • 相关阅读:
    Solaris+Oracle安装(详细图解)
    linux卸载和安装jdk
    UTF8, Unicode, GB2312格式串转换之C语言版
    linux安装ant
    在 Linux 平台下使用 JNI
    华为C/C++笔试题(1)
    c面试
    mongodb数据库
    YARN
    NPM(包管理器)
  • 原文地址:https://www.cnblogs.com/luluping/p/1713516.html
Copyright © 2011-2022 走看看