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,改用另一个博客的语句就好了-
抓取操作系统信息
./snmpwalk 127.0.0.1 -cpublic -v 2c 1.3.6.1.2.1.1.1
-
抓取系统开机时间
./snmpwalk 127.0.0.1 -cpublic -v 2c 1.3.6.1.2.1.1.3
-
抓取机器名
./snmpwalk 127.0.0.1 -cpublic -v 2c 1.3.6.1.2.1.1.5
-
结语
千里之行,始于足下。
最开始的半步总算迈出去了,接下来就是学会如何调用 net-snmp 的库来实现打印计算机信息的功能。