实现在应用程序中通过snmp获取交换机各端口状态
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
实现在应用程序中通过snmp获取交换机各端口状态相关推荐
- Python通过snmp获取交换机VLAN号、VLAN默认网关、VLAN子网掩码和ARP表中的IP地址与MAC对应记录数据
自己做项目时,自己封装的Python通过snmp获取交换机VLAN号.VLAN默认网关.VLAN子网掩码和ARP表中的IP地址与MAC对应记录数据. myPySnmp.py源代码 "&quo ...
- MATLAB程序中使用变量获取到某代码段的运行时间
** 在实时仿真过程中,需要实时获取到某段程序的运行时间,以便根据时间变化来调整对象的变化参数. 比如GPSR路由协议应用于车联网时,在模拟交通场景时需要实时根据程序运行时间和节点速度更改节点的位置信 ...
- 小程序中新版本的获取用户头像与昵称:bind:chooseavatar
前言: 自从微信官方把获取用户昵称与头像的功能改动以后,给我们开发和用户的操作又增加了很多负担,但是没办法,只能使用最新的使用方法了. 小程序用户头像昵称获取规则调整公告 新版实现效果: 注意,真机的 ...
- 微信小程序中企业微信获取外部联系人信息
需求:企业微信聊天页面,点击可跳转微信小程序的用户详情页. 本质就是在企业微信端拿到当前联系人的unionid,然后去用户服务里找到对应的用户userid,进入用户的详情页面. 流程:后端写一个从un ...
- uniapp在小程序中登录,获取用户信息,获取手机号逻辑记录
这里写目录标题 概述 uniapp小程序的授权描述 授权的详细说明及使用 1.微信小程序通过`uni.login()`方法可以获取到微信提供的`code` 2.通过登录获取的`code`码可以以获取用 ...
- 微信小程序中,如何获取微信绑定的手机号
获取手机号 获取微信用户绑定的手机号,需先调用wx.login接口. 因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用 button 组件的点击来触发. 注意:目前该接 ...
- snmp获取交换机日志_日志审计系统和数据库审计系统的区别
今天就易混淆的日志审计系统与数据库审计系统进行辨析.从日志审计系统和数据库审计系统的技术特点和原理来切入,来分析日志审计系统与数据库审计系统的异同. 01.日志审计系统 系统日志 系统日志是记录系统中 ...
- 如何使用 Diago 诊断 Go 程序中的 CPU 和内存使用情况
Diago 是借助 pprof 生成的配置文件和堆快照的可视化工具. 它是一个独立的应用程序,显示每个函数(或函数中每行代码)的 CPU 使用率的调用树,但也可以显示堆快照. 我们将在这篇简短的文章中 ...
- php进攻教程,如何对PHP程序中的常见漏洞进行攻击(下)_php基
如何对PHP程序中的常见漏洞进行攻击(下)_php基 发布时间:2016-06-17 来源: 点击: 次 如何对PHP程序中的常见漏洞进行攻击(下) 翻译:analysist(分析家) 来源:http ...
最新文章
- 使用OPATCH_DEBUG环境变量调试Opatch工具
- Zookeeper知识学习
- Deep learning前的图像预处理
- 安装 esl php 模块,FreeSWITCH 安装配置的 各种坑, 填坑
- 653. Two Sum IV - Input is a BST
- 世界机器人大赛总决赛现场快报:多为中小学生
- 命令折叠代码的所有部分?
- struts2学习一:搭建第一个struts2.5项目
- Mybatis-plus插入数据遇到主键没有默认值的问题
- SpringBoot与web开发
- Rust : *mut c_void 转型 ‘a mut dyn T
- Linux 加固(centos7)
- 苹果计算机单位换算,单位转换器 - 单位换算
- 外星人电脑装linux双系统,在外星人电脑上安装windows10和ubuntu16.04双系统小记
- matlab三角形面积,matlab中计算三角形面积?
- 二元置信椭圆r语言_R语言 第4章 初级绘图(6)
- EasyExcel导入和导出excel数据表格用法示例
- 某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。(30分) 题目内容: 某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3
- 微信小程序二维码识别
- 纳米饮水思源,原子结构探秘