Linux 外部命令错误:/usr/local/bin/snmpget:加载共享库时出错:libnetsnmp.so.20:无法打开共享对象文件
我可以通过命令行执行Linux 外部命令错误:/usr/local/bin/snmpget:加载共享库时出错:libnetsnmp.so.20:无法打开共享对象文件,linux,shared-libraries,snmp,nagios,net-snmp,Linux,Shared Libraries,Snmp,Nagios,Net Snmp,我可以通过命令行执行snmpget/snmpwalk和检查\u snmp。 但是,当我通过Nagios(在配置文件中创建主机和服务条目)执行此操作时,我在特定主机下服务的“状态信息”中看到此错误: 外部命令错误:/usr/local/bin/snmpget:加载时出错 共享库:libnetsnmp.so.20:无法打开共享对象文件:否 这样的文件或目录 OS:SLES 11 该程序缺少一个库。 您可以使用ldd找到程序需要的库的列表: $ ldd /usr/local/bin/snmpget
snmpget
/snmpwalk
和检查\u snmp
。
但是,当我通过Nagios(在配置文件中创建主机和服务条目)执行此操作时,我在特定主机下服务的“状态信息”中看到此错误:
外部命令错误:/usr/local/bin/snmpget:加载时出错
共享库:libnetsnmp.so.20:无法打开共享对象文件:否
这样的文件或目录
OS:SLES 11
该程序缺少一个库。 您可以使用
ldd
找到程序需要的库的列表:
$ ldd /usr/local/bin/snmpget
您将在缺少的库附近看到未找到
当您将snmget
需要的库定位到某个特殊位置(而不是/usr/lib
等)时,可以将其添加到LD\u LIBRARY\u PATH
:
$ LD_LIBRARY_PATH=/usr/local/path-to/lib ldd /usr/local/bin/snmpget
如果
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
即使将库路径添加到环境变量LD_library_path,程序也无法确定所需库的位置,因为它们尚未导出。当你画一张地图去追踪某个东西时,你会忘记把地图放进你的包里,所以当你开始搜索时,你不知道那该死的东西在哪里。线索是导出它们(位置)。怎样?简单地说,在更改环境变量之前使用关键字export,如: 导出LD\u LIBRARY\u PATH=/your/libraries/location/:$LD\u LIBRARY\u PATH 就这样;-)
干杯!我已经将LD_LIBRARY_PATH设置为/usr/local/lib,所有库都在这里。还是不行!可能是
libnetsnmp.so.20
是32位库。请使用文件
命令检查它。只需运行file/path/to/lib。因此
no,当ldd找到所有依赖项时,LD_LIBRARY_path当然不会帮助您。