![是否可以使用 snmpwalk 自动遍历供应商 MIB?](https://linux22.com/image/542318/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20snmpwalk%20%E8%87%AA%E5%8A%A8%E9%81%8D%E5%8E%86%E4%BE%9B%E5%BA%94%E5%95%86%20MIB%EF%BC%9F.png)
使用 net-snmp,我已设置 snmp.conf 以查看供应商 MIB,并且我可以通过“snmpwalk -Cc -v 2c -c <community> <device> <MIB name>
”来遍历它们。当我遍历设备时,是否可以让 snmpwalk 自动遍历供应商 MIB,而无需专门调用供应商 MIB?
答案1
看起来不像。用作遍历根的默认 OID 被硬编码到应用程序中。
我建议创建一个小的包装器 shell 脚本。
例如。
供应商-snmpwalk.sh:
#!/bin/sh
/path/to/snmpwalk -Cc -v 2c -c <community> $1 <root vendor OID>
然后你只需调用包装器脚本,而不是snmpwalk
直接调用
/path/to/vendor-snmpwalk.sh <device>
作为参考,下面是处理步行开始的根 OID 的相关代码(从net-snmp 代码存储库):
74 oid objid_mib[] = { 1, 3, 6, 1, 2, 1 };
...
233 * get the initial object and subtree
234 */
235 if (arg < argc) {
236 /*
237 * specified on the command line
238 */
239 rootlen = MAX_OID_LEN;
240 if (snmp_parse_oid(argv[arg], root, &rootlen) == NULL) {
241 snmp_perror(argv[arg]);
242 exit(1);
243 }
244 } else {
245 /*
246 * use default value
247 */
248 memmove(root, objid_mib, sizeof(objid_mib));
249 rootlen = sizeof(objid_mib) / sizeof(oid);
250 }