Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 外部命令错误:/usr/local/bin/snmpget:加载共享库时出错:libnetsnmp.so.20:无法打开共享对象文件_Linux_Shared Libraries_Snmp_Nagios_Net Snmp - Fatal编程技术网

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当然不会帮助您。