Linux中安装编译net-snmp

467 阅读2分钟

Linux中安装编译net-snmp

前情提要

工作中碰到要用 snmp2.0 制作一个汇报设备状态信息的代理,结果一问三不知,决定恶补相关知识。原本想着这种项目应该挺成熟了的,就想下个 windows 能跑的例程来看看,用 QT 加几个控件,打印计算机状态信息啥的,必应了好久,从 github 下了四、五个源码没一个编译得了的(弱鸡啥都看不懂QAQ)。遂决定按照最普遍的方法,一步步跟着人家的教程来。

参考博客:net-snmp-5.7.3配置编译安装 - 乌合之众 - 博客园 (cnblogs.com)

主要内容

工具准备

  • VMware 16 Pro
  • Ubuntu 22.04.1 LTS

填坑

  • 未找到 -lperl 解决方法:

    sudo apt-get install libperl-dev

  • 版本一定要新

    解决了 perl 库的问题后,又遇到了个很折磨人的问题:之前下了个 5.6.2.1 版本的 net-snmp,结果中间运行 make 时报错,说 perl 和 net-snmp 的某个头文件里重复 typedef 了 U64,而它们实际表示的肯定不通用。当时就卡在这里了,总不能让我改源代码吧,就算改也不知道要改到什么时候去。结果又是必应了好久,终于敲对了一次搜索关键词,直接搜到了在SOURCEFORGE上同样的问题。

    结论:下载 5.8 之后的版本,我下了 5.9.1 实测 make 成功。

  • 最后验证原博客的语句时,一直返回 Timeout: No Response from localhost ,改用另一个博客的语句就好了

    1. 抓取操作系统信息

      ./snmpwalk 127.0.0.1 -cpublic -v 2c 1.3.6.1.2.1.1.1

    2. 抓取系统开机时间

      ./snmpwalk 127.0.0.1 -cpublic -v 2c 1.3.6.1.2.1.1.3

    3. 抓取机器名

      ./snmpwalk 127.0.0.1 -cpublic -v 2c 1.3.6.1.2.1.1.5


结语

千里之行,始于足下。

最开始的半步总算迈出去了,接下来就是学会如何调用 net-snmp 的库来实现打印计算机信息的功能。