【发布时间】:2014-09-17 15:25:07
【问题描述】:
我想发现我的子网中的打印机。我可以使用以下链接中提到的 net-snmp 来做到这一点吗? https://sourceforge.net/p/net-snmp/bugs/2336/
但它似乎不起作用?我是否应该在 snmp_api 中启用任何广播标志来做到这一点。另外我将如何处理响应?你能在这个简单的应用程序的上下文中解释我吗? http://www.net-snmp.org/wiki/index.php/TUT:Simple_Application
我是 SNMP 新手。非常感谢任何帮助。
PS:我使用的是 net-snmp 5.7.2.1
【问题讨论】:
-
请澄清“您尝试了什么”的问题。另外,当您尝试时,您收到的输出是什么?您可以尝试使用命令行工具
snmpget发出相同的请求,以排除您的编程错误。 -
我也试过命令行。当我向广播地址发送“snmpget”请求时出现超时。
-
尝试将您的 PC 与打印机放在同一个子网中。它开始工作了吗?然后你有一个路由问题。询问您的本地网络管理员对您网络中的广播数据包有哪些限制。出于安全原因,大多数路由器会丢弃来自外部的广播数据包。您的管理员或许可以为您的管理站设置例外。
-
我想这是可行的。所以现在我正在尝试 ping 我的计算机所在子网的广播地址。我没有得到“超时”。虽然我收到了“snmpget”的错误,而“snmpwalk”没有响应。我收到了“snmpgetnext”的响应,当我一次又一次地执行命令时,它会不断变化。我假设它正在遍历从子网中所有打印机获得的响应?!?!从一个文件中获取所有打印机的所有响应的正确方法是什么?
-
你不应该期望 snmpwalk 或 snmp-get-next 在广播中是可行的,因为每个响应主机都有自己单独的 OID 排序。语义没有定义(正如 Lex Li 在他的回答中所写)。您应该能够获得对简单 get 请求的响应,但就像 Lex 所写的那样,您最好确保所有打印机都使用相同的社区字符串。
标签: networking snmp broadcast net-snmp