using System.Net; using System.Net.NetworkInformation; using SnmpSharpNet; using System.Collections.Generic;
Console.Write("Nhập địa chỉ IP thiết bị: "); string ipAddress = Console.ReadLine();
try { IPAddress ip = IPAddress.Parse(ipAddress); OctetString community = new OctetString("172.20.158.29"); // Thay đổi nếu cần IPEndPoint endPoint = new IPEndPoint(ip, 161);
// Lấy thông tin tên thiết bị và địa chỉ MAC
var pdu = new Pdu(PduType.Get);
pdu.VbList.Add(".1.3.6.1.2.1.1.5.0"); // sysName
pdu.VbList.Add(".1.3.6.1.2.1.2.2.1.6"); // ifPhysAddress var agentParams = new AgentParameters(community);
var target = new UdpTarget((IPAddress)endPoint.Address, endPoint.Port, 2000, 1);
SnmpV2Packet response = (SnmpV2Packet)target.Request(pdu, agentParams); if (response != null && response.Pdu != null)
{ foreach (Vb v in response.Pdu.VbList) { switch (v.Oid.ToString()) { case ".1.3.6.1.2.1.1.5.0": Console.WriteLine("Tên thiết bị: " + v.Value.ToString()); break; case ".1.3.6.1.2.1.2.2.1.6": Console.WriteLine("Địa chỉ MAC: " + v.Value.ToString()); break; } } // Lấy thông tin cổng kết nối (sử dụng SimpleSnmp để Walk) var snmp = new SimpleSnmp(target); Oid rootOid = new Oid(".1.3.6.1.2.1.2.2.1.2"); // ifDescr IDictionary<Oid, AsnType> resultTable = snmp.Walk(rootOid); if (resultTable != null) { foreach (var entry in resultTable) { if (entry.Value != null && entry.Value.GetType() != typeof(SnmpSharpNet.NoSuchInstance)) { Console.WriteLine("Port: " + entry.Key.ToString().Substring(24) + ", Mô tả: " + entry.Value.ToString()); } else { Console.WriteLine("Lỗi khi lấy thông tin cổng: " + entry.Key.ToString().Substring(24)); } } } else { Console.WriteLine("Lỗi khi lấy thông tin cổng."); } // Kiểm tra trạng thái online bool isOnline = CheckOnlineStatus(ipAddress); Console.WriteLine("Trạng thái: " + (isOnline ? "Online" : "Offline")); }
else
{ Console.WriteLine("Không nhận được phản hồi từ thiết bị hoặc PDU null.");
}
} catch (Exception ex) { Console.WriteLine("Lỗi: " + ex.Message); }
static bool CheckOnlineStatus(string ipAddress) { try { using (Ping ping = new Ping()) { PingReply reply = ping.Send(ipAddress); return reply.Status == IPStatus.Success; } } catch { return false; } } erros: Severity Code Description Project File Line Suppression State Details Error CS1503 Argument 1: cannot convert from 'SnmpSharpNet.UdpTarget' to 'string' ComponentConsole Error CS7036 There is no argument given that corresponds to the required parameter 'rootOid' of 'SimpleSnmp.Walk(SnmpVersion, string)' ComponentConsole