在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
用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(); } } |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论