推荐一款开源的 SNMP 客户端库:gosnmp
warning:
这篇文章距离上次修改已过190天,其中的内容可能已经有所变动。
gosnmp
是一个用 Go 语言编写的 SNMP 客户端库,它提供了发送 SNMP 请求和解析 SNMP 响应的功能。以下是一个使用 gosnmp
发送 SNMP GET 请求的简单示例:
首先,你需要确保你的系统已经安装了 gosnmp
库。如果还没有安装,可以通过以下命令进行安装:
go get github.com/gosnmp/gosnmp
然后,你可以使用以下 Go 代码来发送 SNMP GET 请求:
package main
import (
"fmt"
"time"
"github.com/gosnmp/gosnmp"
)
func main() {
// 创建 SNMP 客户端实例
snmp := gosnmp.GoSNMP{
Target: "127.0.0.1", // 替换为你的 SNMP 服务器地址
Port: 161, // 默认 SNMP 端口
Community: "public", // 替换为你的 SNMP 社区字符串
Version: gosnmp.Version2c,
Timeout: time.Duration(3000) * time.Millisecond, // 设置超时时间
Retries: 0, // 设置重试次数
}
// 创建 OID 列表
oids := []string{"1.3.6.1.2.1.1.5.0", "1.3.6.1.2.1.1.3.0"} // 系统名称和系统联系人
// 发送 GET 请求
result, err := snmp.Get(oids)
if err != nil {
fmt.Printf("SNMP GET error: %s\n", err)
return
}
// 打印结果
for i, variable := range result.Variables {
fmt.Printf("OID: %s, Type: %s, Value: %v\n", oids[i], variable.Type, variable.Value)
}
}
确保替换 Target
, Community
, 和 OID 列表以匹配你的 SNMP 服务器和需要查询的对象标识符。
这段代码创建了一个 GoSNMP
实例,并设置了目标 SNMP 服务器的地址、端口、SNMP 版本和超时参数。然后,它定义了一个 OID 列表,并使用 Get
方法发送了一个 SNMP GET 请求。如果请求成功,它会打印出所有 OID 的类型和值。
评论已关闭