【问题标题】:External command error: /usr/local/bin/snmpget: error while loading shared libraries: libnetsnmp.so.20: cannot open shared object file外部命令错误:/usr/local/bin/snmpget:加载共享库时出错:libnetsnmp.so.20:无法打开共享对象文件
【发布时间】:2012-07-09 17:59:19
【问题描述】:

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

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

操作系统:SLES 11

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      程序错过了一个库。 您可以使用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
      

      【讨论】:

      • ldd /usr/local/bin/snmpget linux-vdso.so.1 => (0x00007fffc33ff000) libnetsnmp.so.20 => /usr/local/lib/libnetsnmp.so.20 (0x00007fefca658000 ) libm.so.6 => /lib64/libm.so.6 (0x00007fefca402000) libc.so.6 => /lib64/libc.so.6 (0x00007fefca0a4000) /lib64/ld-linux-x86-64.so。 2 (0x00007fefca929000)
      • 没有缺少任何库!
      • 我已经将 LD_LIBRARY_PATH 设置为 /usr/local/lib,所有库都在其中。还是不行!
      • 可能是 libnetsnmp.so.20 是一个 32 位库。请使用file 命令检查它。只需运行file /path/to/lib.so
      • 不,当 ldd 找到所有依赖项时,LD_LIBRARY_PATH 当然不会帮助你。
      【解决方案3】:

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

      就是这样;-)

      干杯

      【讨论】:

        猜你喜欢
        • 2020-10-19
        • 2016-05-11
        • 1970-01-01
        • 2018-12-17
        • 2021-05-01
        • 1970-01-01
        • 2013-06-11
        • 2019-05-31
        • 2019-10-02
        相关资源
        最近更新 更多