go使用snmp库查询mib数据
转载请注明出处:
OID(Object Identifier)是一种用于标识和唯一命名管理信息库中的对象的标准方式。给定一个OID,可以确定特定的管理信息库对象,并对其进行操作。
go语言使用snmp库中的 k-sone/snmpgo 实现相关mib查询的代码如下:
package main import (
"fmt"
"log"
"net" "github.com/k-sone/snmpgo"
) func main() {
// 创建SNMP会话
session := snmpgo.NewSNMP(goSNMP.Version2c, 5000000, snmpgo.Default)
err := session.Open()
if err != nil {
log.Fatalf("无法打开SNMP会话:%v", err)
}
defer session.Close() // 设置SNMP目标
target := &snmpgo.SNMPTarget{
Address: "localhost",
Port: 161,
Community: "public",
Version: snmpgo.Version2c,
} // 创建SNMP GET请求
pdu := snmpgo.NewPdu(snmpgo.GetRequest)
pdu.AddOid(snmpgo.MustParseOid("1.3.6.1.2.1.55.1.7.1.5")) // 发送SNMP请求
packet, err := pdu.Marshal()
if err != nil {
log.Fatalf("SNMP请求封包失败:%v", err)
}
result, err := session.GetBulk(packet, target)
if err != nil {
log.Fatalf("SNMP GET请求失败:%v", err)
} // 处理SNMP响应
if result.ErrorStatus() != snmpgo.NoError {
log.Fatalf("SNMP响应错误:%s", result.ErrorStatus())
} // 解析SNMP响应
respPdu := result.PduAtIndex(0)
if respPdu == nil {
log.Fatal("未收到SNMP响应")
} // 获取系统启动时间的值
startupTime := respPdu.VariableBindings()[0].Variable.String() fmt.Printf("系统启动时间:%s\n", startupTime)
}
上述代码中,使用了snmpgo
库来进行SNMP通信。首先,创建了一个SNMP会话,并设置SNMP目标的地址、端口和共同体(community)。然后,我们创建了一个GET请求,并将要获取的OID添加到请求中。接下来,发送SNMP请求,并处理响应。如果请求成功,我们从响应中解析出系统启动时间的值并打印出来。
请注意,在运行此示例之前,确保已经安装了 snmpgo
库(可以通过 go get github.com/k-sone/snmpgo
进行安装)以及有可用的 SNMP 代理服务器。
go使用snmp库查询mib数据的更多相关文章
- WebGIS中基于控制点库进行SHP数据坐标转换的一种查询优化策略
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.前言 目前项目中基于控制点库进行SHP数据的坐标转换,流程大致为:遍 ...
- SQL Azure (18) 使用External Table实现垮库查询
<Windows Azure Platform 系列文章目录> 问题 1.我们在进行SQL Server开发的时候,经常会使用垮库查询.但是在默认情况下,使用Azure SQL Datab ...
- sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)
sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器) 我们日常使用SQL Server数据库时,经常遇到需要在实例Instance01中跨实例访问Instanc ...
- sql 跨库查询备忘笔记
select * from OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名 inse ...
- 【ASH】如何导出视图DBA_HIST_ACTIVE_SESS_HISTORY的查询结果数据
[ASH]如何导出视图DBA_HIST_ACTIVE_SESS_HISTORY的查询结果数据 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后 ...
- SQL Server跨库复制表数据错误的解决办法
SQL Server跨库复制表数据的解决办法 跨库复制表数据,有很多种方法,最常见的是写程序来批量导入数据了,但是这种方法并不是最优方法,今天就用到了一个很犀利的方法,可以完美在 Sql Serv ...
- ACCESS-如何多数据库查询(跨库查询)
测试通过:ACCESSselect * from F:\MYk.mdb.tablename说明:1.查询语句2.来原于哪(没有密码是个路径)3.查询的表名 ====================== ...
- 项目中通过Sorlj获取索引库中的数据
在开发项目中通过使用Solr所提供的Solrj(java客户端)获取索引库中的数据,这才是真正对项目起实质性作用的功能,提升平台的检索性能及检索结果的精确性 第一步,引入相关依赖的jar包 第二步,根 ...
- Access数据库跨库查询及记录集区分
医疗设备软件一般都是单机软件,如果是Windows平台,常会选择Access数据库存储结构化数据,因为他轻量,便于部署.然而随着医疗信息化的发展,医生希望对多台单机设备的数据进行管理,采用网络数据库当 ...
- EF 跨库查询
原因:最近公司项目,遇到一个ef跨库查询的问题.(只是跨库,并不是跨服务器哈) 主要我们的一些数据,譬如地址,城市需要查询公共资料库. 但是本身我的程序设计采用的是ef框架的.因此为这事花费了1天时间 ...
随机推荐
- 4.3 x64dbg 搜索内存可利用指令
发现漏洞的第一步则是需要寻找到可利用的反汇编指令片段,在某些时候远程缓冲区溢出需要通过类似于jmp esp等特定的反汇编指令实现跳转功能,并以此来执行布置好的ShellCode恶意代码片段,LyScr ...
- mac Typora最新版逆向破解
0x00 Typora是一款强大的markdown编辑器,它可以让你轻松地写出美观的文档.但是其一直是不开源的,而且现在也已经开始收费了.所以本着学习探索的精神去逆向看看- 0x01 众所周知Typo ...
- 在js中修改less文件内样式
在项目中使用使用进度条时遇到了一点问题,根据需求进度条的百分比需要在条内显示,但是当完成度太低时由于进度条背景和百分比值都是接近的颜色,所以此时无法显示进度值,这个时候需要根据完成度大小来进行判断,动 ...
- 我真的不想再用mybatis和其衍生框架了选择自研亦是一种解脱
我真的不想再用mybatis和其衍生框架了选择自研亦是一种解脱 文档地址 https://xuejm.gitee.io/easy-query-doc/ GITHUB地址 https://github. ...
- docker :repository docker.io/zookeeper not found: does not exist or no pull access
分析 略 解决 vi /etc/docker/daemon.json { "registry-mirrors" : [ "http://registry.docker-c ...
- [python]enumerate迭代
Python中有个内置的函数叫做 enumerate,可以在迭代时返回元素的索引. # 示例代码01 warframe = ["saryn", "wisp", ...
- 网络请求-Android篇(Okhttp和Retrofit)
一.OkHttp的介绍和基本用法 OkHttp是一个流行的开源Java和Android应用程序的HTTP客户端.它由Square Inc.开发,提供了一种简单高效的方式来进行应用程序中的HTTP请求. ...
- css面试题一
1.继承 css的继承:就是给父级设置一些属性,子级继承了父级的该属性,这就是我们css中的继承.官方的解释,继承是一种规则,它允许样式不仅应用于特定的html标签元素,而且应用于其后代元素. a.有 ...
- QA|selenium打开浏览器后没有执行后面的代码(get请求)|UI自动化测试
Q:selenium打开浏览器后没有执行后面的代码(get请求) 代码如图: 原因:webdriver_path应该给的是chromedriver.exe的路径,而不是chrome.exe的路径,写错 ...
- Sermant类隔离架构:解决JavaAgent场景类冲突的实践
本文分享自华为云社区<Sermant类隔离架构解析--解决JavaAgent场景类冲突的实践>,作者:华为云开源. Sermant是基于Java字节码增强技术的无代理服务网格,其利用Jav ...