外部命令错误:/ usr / local / bin / snmpget:加载共享库时出错:libnetsnmp.so.20:无法打开共享对象文件

时间:2012-07-10 09:22:36

标签: linux shared-libraries snmp nagios net-snmp

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

  

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

     

操作系统:SLES 11

3 个答案:

答案 0 :(得分:5)

如果您的系统中有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

答案 1 :(得分: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

答案 2 :(得分:0)

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

就是这样; - )

干杯