我可以通过命令行执行snmpget
/ snmpwalk
和check_snmp
。
但是,当我通过Nagios(在配置文件中创建主机和服务条目)时,我在特定主机下的服务的“状态信息”中看到此错误:
外部命令错误:/ usr / local / bin / snmpget:加载时出错 共享库:libnetsnmp.so.20:无法打开共享对象文件:否 这样的文件或目录
操作系统:SLES 11
答案 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
就是这样; - )
干杯