我想使用 snmp 构建一个应用程序来搜索我的 LAN 并探索共享某些资源的设备。我需要一些帮助才能开始,我尝试使用 net-snmp 做同样的事情,但仍然没有成功。
答案1
我认为你想做的事是不可能的。
- 首先,默认情况下,任何桌面操作系统上都不会安装和/或激活 SNMP。
- 其次,无法通过 SNMP 远程配置 SNMP,最好的情况下,您可以通过它重新配置已配置的系统。这意味着您必须先在所有设备上手动安装和配置 SNMP,才能执行必要的操作。
- 第三,虽然 Net-SNMP 和 Windows 实现确实可以在启动/关闭时发送 SNMP 陷阱,但大多数其他网络设备(如打印机等)无法配置为执行此操作。如果它们确实发送了陷阱,那也只是为了报告错误情况。
如果您想要做的只是网络发现,那么有很多更好的替代方法可以实现,而不是强制 SNMP 执行其未设计的操作。
答案2
如果你想进行完整的网络发现,唯一现实的方法是:
1 - 从交换机获取 MAC 地址(从其 MAC 地址表中)
2 - 从路由器获取 IP 地址/MAC 地址(ARP 表)
3 - 使用 DNS 通过 IP 地址反向查找主机名
此过程需要定期重复,因为 MAC 地址和 ARP 表中的数据都会超时,前者需要 10 分钟,后者通常需要几个小时。
通过以上信息,您可以确定设备连接的位置(或至少连接到哪个交换机端口),然后,如果您需要更多信息,可以询问每个主机以获取有关操作系统的详细信息或其他您需要知道的信息。