我想找到我的网络中所有启用 snmp 的设备,我得到了一些类似它在代理和管理器架构中工作的方式。
我得到了 net-snmp 库来创建一个简单的应用程序来从远程设备获取 snmp 数据。我必须编写一个程序来执行此操作,我想要该设备的 mac 地址和更多信息。
我得到了从远程节点获取数据的程序,但我有一个疑问,如何获取系统的 mac 地址,以及获取设备 mac 的 oid 是什么,
是否存在不特定于供应商的通用 oid?我必须获取所有设备的数据。
一些更新:
现在使用 snmp 工具 snmpwalk 我得到了许多信息,但其中我想要一些系统信息、mac、os 名称(如果可用),但我不知道如何使用 net-snmp 编程来获取这些信息,因为我不知道系统名称将来自哪个通用 oid。我想编写一个程序,我必须获取一些所需的信息,所以我需要 oid,我必须将这个 oid 提供给 net-Snmp 的函数,这样它才能给我相应的结果。
我必须使用像 sysName 这样的字符串名称来获取系统名称,如果是这样,那么在 mac 地址的情况下会写有“ifPhysAddress.2”,然后提到 mac(在 snmpwalk 的结果中)。那么获取 mac 的 oid 是什么,因为它对于所有设备都是不同的。
当我使用 snmpwalk 时,我收到如下一行
SNMPv2-SMI::mib-2.25.3.2.1.3.1 = 字符串:“HP LaserJet Professional P1606dn”
这是打印机的名称。表示此 oid 用于获取打印机的名称 (mib-2.25.3.2.1.3.1)。这是否适用于所有设备,如果我查询此 oid,无论设备是什么,我都会获得相应 IP 的设备名称。这是否正确。
请提供一些想法。
谢谢
答案1
您可以使用网络地图的snmp-brute就像是
nmap -sU -p161 --script snmp-brute --script-args snmplist=community.lst 192.168.1.0/24
答案2
许多监控应用程序将包括一个网络发现可以查询其发现的所有设备上的 snmp 的工具。有些甚至允许您输入多个 SNMP 社区字符串,它会逐一尝试。
答案3
这是一个脚本我将其与 OpenNMS 一起使用,它将生成一个包含启用 snmp 的设备及其各自社区的 XML 文件。
它接受 IP 地址和多个社区名称作为输入文件。