151-5197-5087
扬州华为授权服务中心
当前位置:网站首页 > 网络设备调试 正文 网络设备调试

实现在应用程序中通过snmp获取交换机各端口状态

2024-12-05 23:16:33 网络设备调试 27 ℃ 0 评论

1.编译snmp

编译在虚拟机完成。

1.解压安装包得到net-snmp-5.9.1文件夹,进入后执行configure脚本进行编译预配置,参数如下。

./configure --host=arm-linux-gnu --target=arm-linux-gnu --with-cc=/tools/Xilinx/SDK/2019.1/gnu/aarch64/lin/aarch64-linux/bin/aarch64-linux-gnu-gcc --prefix=/home/snmpInstall --disable-scripts --with-endianness=little --enable-mini-agent --disable-ipv6 --disable-manuals --enable-as-needed --disable-ucd-snmp-compatibility --disable-embedded-perl --disable-shared -enable-debugging

参数详解

./configure --host=目标平台名 --target=目标平台名 --build=编译平台名 --with-cc=编译器路径 --prefix=SNMP包在目标板卡上的预期路径

其中,平台名是由 CPU类型-制造商-操作系统 或 CPU类型-制造商-内核-操作系统 格式表示的规范的系统名称。编译平台名可以缺省,由config.guess从当前设备获取;目标平台名缺省时将默认为编译平台名,因此交叉编译时必需在参数中指定。

可以查看文件夹中 config.sub来找到平台名。

config.guess 这个是在构建环境上运行的一个脚本,它用来猜测构建机的配置环境,因为这个脚本是在构建机上运行,所以它可以动态执行uname等命令来获得构建机的环境,所以我们一般不要指定这个变量,从而让脚本自动获得。

config.sub 这个是将host target build变量正则化的一个脚本,它的sub就是substitute的缩写。因为用户提供的build可能并不符合脚本正规的四元组或者三元组的结构,所以这个脚本将它转换为标准的格式,从而可以进行格式化处理。

原文链接:C++学习(四零一)config.guess config.sub_hankern的博客-CSDN博客_config.guess

--disable-embedded-perl 缺少该参数将导致编译失败,报缺少perl lib错误;

--disable-shared 缺少将导致编译不完整,不产生动态库,原因未知;

其他参数含义参考:https://www.itdaan.com/blog/2015/09/16/e6b0d689b4e0f2d2f43b15a5604deb7e.html

脚本执行过程中会要求输入配置,回车跳过即可。

成功后显示如下信息

2.当前路径执行make&make install编译,产生net-snmp完整安装包

执行make,成功后显示:

执行make install,至此,编译完成。

3.从configure时填写的prefix参数处得到SNMP安装包。压缩后拷贝出来,在目标设备的相应路径解压。

安装包位于/home/snmpInstall,把整个snmpInstall文件夹压缩

安装包包含5个文件夹:

bin中是对应snmp不同功能的可执行文件,包括snmpwalk\snmpget\snmptrap等;

sbin中是进程类可执行文件,包括agent端的回复请求进程snmpd,和NMS端的接收trap/inform进程snmptrapd。bin&sbin对应的源文件位于net-snmp-5.9.1中的app文件夹

include中是所有的头文件;

lib中包含net-snmp动态库所有so文件,lib中动态库对应的源文件位于net-snmp-5.9.1中的snmplib文件夹。

share中保存配置文件和MIB,用于agent/NMS端的自定义配置。

非标MIB安装:Linux snmp导入MIB库 - 風£飛 - 博客园

解压到目标板卡的/home下解压,必须令安装包的绝对路径与prefix参数相同

 

2.交换机配置

需要知道交换机读和写权限的comunity名称,snmpget功能只需要用到读权限。配置交换机的snmp版本为v2c。

3.应用程序实现功能

1.snmp头文件和动态库包含到工程

安装包中的include文件夹拷贝到项目中,并添加包含路径

安装包中的lib文件夹配置到项目动态库路径

2.snmpget的c源代码改写

从net-snmp-5.9.1中的app文件夹中得到snmpget.c,改写main函数:main函数改名,将输入参数改为调用参数,将打印改为返回值。

参考:https://www.yuque.com/dashboard/notes#QfaW

3.填充参数ip:port\oid\community\version

moxa交换机获取端口状态的oid为:.1.3.6.1.4.1.8691.603.1.1.2.1.1.3.n 该值从moxa的私有MIB中得到(.1.3.6.1.4.1为企业分支,8691为moxa的企业代码)。

使用moxa交换机的只读comunity名,默认为"public"

port为snmp请求的默认接收端口161,ip为moxa交换机的调试ip

snmp版本号为v2c

4.配置板卡ip

版权说明:如非注明,本站文章均为 扬州驻场服务-网络设备调试-监控维修-南京泽同信息科技有限公司 原创,转载请注明出处和附带本文链接

请在这里放置你的在线分享代码
«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接