2

我可以通过命令行执行snmpget/snmpwalk和。check_snmp但是,当我通过 Nagios 执行此操作(在配置文件中创建主机和服务条目)时,我在特定主机下的服务的“状态信息”中看到此错误:

外部命令错误:/usr/local/bin/snmpget:加载共享库时出错:libnetsnmp.so.20:无法打开共享对象文件:没有这样的文件或目录

操作系统:SLES 11

4

3 回答 3

7

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
于 2014-03-31T04:00:37.113 回答
0

该程序错过了一个库。您可以使用以下方式找到程序所需的库列表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
于 2012-07-10T09:27:05.110 回答
0

即使您将库路径添加到环境变量 LD_LIBRARY_PATH,您的程序也无法确定所需库的位置,因为它们尚未导出。您可以将其想象为您绘制地图以追踪某物,却忘记将地图放入包中,因此当您开始搜索时,您不知道该死的东西在哪里。线索是导出它们(位置)。如何 ?简单地说,在环境变量的任何更改之前使用关键字 export,例如: export LD_LIBRARY_PATH=/your/libraries/location/:$LD_LIBRARY_PATH

就是这样;-)

干杯

于 2015-09-15T13:04:23.027 回答