我可以通过命令行执行snmpget
/snmpwalk
和。check_snmp
但是,当我通过 Nagios 执行此操作(在配置文件中创建主机和服务条目)时,我在特定主机下的服务的“状态信息”中看到此错误:
外部命令错误:/usr/local/bin/snmpget:加载共享库时出错:libnetsnmp.so.20:无法打开共享对象文件:没有这样的文件或目录
操作系统:SLES 11
我可以通过命令行执行snmpget
/snmpwalk
和。check_snmp
但是,当我通过 Nagios 执行此操作(在配置文件中创建主机和服务条目)时,我在特定主机下的服务的“状态信息”中看到此错误:
外部命令错误:/usr/local/bin/snmpget:加载共享库时出错:libnetsnmp.so.20:无法打开共享对象文件:没有这样的文件或目录
操作系统:SLES 11
libnetsnmp.so.XX
如果在您的系统中,以下过程很有帮助。
首先搜索库 libnetsnmp.so.XX
sudo find / -name libnetsnmp.so*
所以你会得到如下输出
/usr/lib/libnetsnmp.so.30
/usr/lib/libnetsnmp.so.15
/usr/lib/libnetsnmp.so.15.1.2
/usr/local/lib/libnetsnmp.so.30
/usr/local/lib/libnetsnmp.so
/usr/local/lib/libnetsnmp.so.30.0.2
/usr/local/lib/libnetsnmp.so.20
...
现在将其链接libnetsnmp.so.XX
到/usr/lib/
sudo ln -s /usr/local/lib/libnetsnmp.so.XX /usr/lib/libnetsnmp.so.XX
该程序错过了一个库。您可以使用以下方式找到程序所需的库列表ldd
:
$ ldd /usr/local/bin/snmpget
您将not found
在缺少的库附近看到。
当您找到snmget
需要的库时,这是一个特殊的位置(不是/usr/lib
等等),您可以添加到LD_LIBRARY_PATH
:
$ LD_LIBRARY_PATH=/usr/local/path-to/lib ldd /usr/local/bin/snmpget
即使您将库路径添加到环境变量 LD_LIBRARY_PATH,您的程序也无法确定所需库的位置,因为它们尚未导出。您可以将其想象为您绘制地图以追踪某物,却忘记将地图放入包中,因此当您开始搜索时,您不知道该死的东西在哪里。线索是导出它们(位置)。如何 ?简单地说,在环境变量的任何更改之前使用关键字 export,例如: export LD_LIBRARY_PATH=/your/libraries/location/:$LD_LIBRARY_PATH
就是这样;-)
干杯