Networking netsnmp的难点:使用snmpget并将错误记录到STDOUT

Networking netsnmp的难点:使用snmpget并将错误记录到STDOUT,networking,snmp,Networking,Snmp,在手册页中,我看到以下内容: -L LOGOPTS Toggle various defaults controlling logging: e: log to standard error o: log to standard output 这让我非常兴奋,因为我正处于一种可能的状态 对我来说,从STDOUT而不是从 斯特德尔 如果我运行命令: snmpget -v1 -ccommS

在手册页中,我看到以下内容:

-L LOGOPTS        Toggle various defaults controlling logging:
              e:           log to standard error
              o:           log to standard output
这让我非常兴奋,因为我正处于一种可能的状态 对我来说,从STDOUT而不是从 斯特德尔

如果我运行命令:

snmpget -v1 -ccommString  -Lo 172.16.x.x  .1.2.3.4.5.6.7.8.9
snmpget -v1 -ccommString  -Lo 172.16.x.x .1.2.3.4.5.6.7.8.9 2> foo
我回到终点站

Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: iso.2.3.4.5.6.7.8.9
但是,如果我运行该命令:

snmpget -v1 -ccommString  -Lo 172.16.x.x  .1.2.3.4.5.6.7.8.9
snmpget -v1 -ccommString  -Lo 172.16.x.x .1.2.3.4.5.6.7.8.9 2> foo
我在终端没有得到响应,但foo文件包含相同的响应 我在上面收到的错误消息。因此,我得到了错误信息 而不是像我所期望的那样在STDOUT上

我这里的手册页读错了吗?另外,我也试过这个 在linux和windows系统上,由于我所处的情况 我更希望在STDOUT而不是STDERR上发出错误 因为我不想用shell来做与往常一样的工作 2> &1


非常感谢您的帮助或建议。

我相信-L选项控制代理(snmpd)如何进行日志记录,而不适用于来自snmpget的错误消息(-L是“常用”标志之一,它可能不适用于所有网络snmp命令)。

我相信-L选项控制代理(snmpd)如何进行日志记录,并且不适用于来自snmpget的错误消息(-L是“通用”标志之一,它可能不适用于所有网络snmp命令)。

以下c代码是snmpget实用程序源代码的一部分(net-snmp-5.4.2.1\apps中的snmpget.c)

如您所见,消息只需写入stderr


您可以有一个自定义的snmpget实用程序:源代码,将stderr替换为stdout,然后重新编译。

以下c代码是snmpget实用程序源代码的一部分(net-snmp-5.4.2.1\apps中的snmpget.c)

如您所见,消息只需写入stderr

您可以有一个自定义的snmpget实用程序:在源代码中,将stderr替换为stdout,然后重新编译