经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Go语言 » 查看文章
go使用snmp库查询mib数据
来源:cnblogs  作者:香吧香  时间:2023/10/19 10:04:18  对本文有异议

转载请注明出处:

  OID(Object Identifier)是一种用于标识和唯一命名管理信息库中的对象的标准方式。给定一个OID,可以确定特定的管理信息库对象,并对其进行操作。

  go语言使用snmp库中的 k-sone/snmpgo 实现相关mib查询的代码如下:

  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net"
  6.  
  7. "github.com/k-sone/snmpgo"
  8. )
  9. func main() {
  10. // 创建SNMP会话
  11. session := snmpgo.NewSNMP(goSNMP.Version2c, 5000000, snmpgo.Default)
  12. err := session.Open()
  13. if err != nil {
  14. log.Fatalf("无法打开SNMP会话:%v", err)
  15. }
  16. defer session.Close()
  17. // 设置SNMP目标
  18. target := &snmpgo.SNMPTarget{
  19. Address: "localhost",
  20. Port: 161,
  21. Community: "public",
  22. Version: snmpgo.Version2c,
  23. }
  24. // 创建SNMP GET请求
  25. pdu := snmpgo.NewPdu(snmpgo.GetRequest)
  26. pdu.AddOid(snmpgo.MustParseOid("1.3.6.1.2.1.55.1.7.1.5"))
  27. // 发送SNMP请求
  28. packet, err := pdu.Marshal()
  29. if err != nil {
  30. log.Fatalf("SNMP请求封包失败:%v", err)
  31. }
  32. result, err := session.GetBulk(packet, target)
  33. if err != nil {
  34. log.Fatalf("SNMP GET请求失败:%v", err)
  35. }
  36. // 处理SNMP响应
  37. if result.ErrorStatus() != snmpgo.NoError {
  38. log.Fatalf("SNMP响应错误:%s", result.ErrorStatus())
  39. }
  40. // 解析SNMP响应
  41. respPdu := result.PduAtIndex(0)
  42. if respPdu == nil {
  43. log.Fatal("未收到SNMP响应")
  44. }
  45. // 获取系统启动时间的值
  46. startupTime := respPdu.VariableBindings()[0].Variable.String()
  47. fmt.Printf("系统启动时间:%s\n", startupTime)
  48. }

  上述代码中,使用了snmpgo库来进行SNMP通信。首先,创建了一个SNMP会话,并设置SNMP目标的地址、端口和共同体(community)。然后,我们创建了一个GET请求,并将要获取的OID添加到请求中。接下来,发送SNMP请求,并处理响应。如果请求成功,我们从响应中解析出系统启动时间的值并打印出来。

  请注意,在运行此示例之前,确保已经安装了 snmpgo 库(可以通过 go get github.com/k-sone/snmpgo 进行安装)以及有可用的 SNMP 代理服务器。

 

原文链接:https://www.cnblogs.com/zjdxr-up/p/17773468.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号