读取win10中snmp信息:
一、win10配置snmp协议
- 添加snmp服务,路径: 控制面板/应用和功能 中选择可选功能
选择 简单网络管理协议(SNMP) 并添加
2. 配置snmp信息
二、编写Golang代码
- 定义IP、端口、和社区。注意社区要和上图设置保持一致
const TgtIP = "localhost" // 目标IP
const TgtProt = 161 // 目标端口
const TgtCommunity = "pub" // 社区,和winodws中保持一致2. 新建function, 用来创建GoSNMP结构体,win10默认SNMPV2c版本
func newSnmp() *g.GoSNMP {
return &g.GoSNMP{
Target: TgtIP,
Port: TgtProt,
Transport: "udp",
Community: TgtCommunity,
Version: g.Version2c,
Timeout: time.Duration(2) * time.Second,
Retries: 3,
ExponentialTimeout: true,
MaxOids: g.MaxOids,
}
}3. 构建main函数,缺少fn
func main() {
//snmp连接
g.Default = newSnmp()
err := g.Default.Connect()
if err != nil {
fmt.Printf("Connect() err: %v", err)
}
defer g.Default.Conn.Close()
//snmp walk
var oid string = ".1.3.6.1.2.1.2.2.1.2"
err = g.Default.Walk(oid, fn)
if err != nil {
fmt.Printf("Walk() err: %v", err)
}
}4. 补充打印处理函数fn
func fn(v g.SnmpPDU) error {
fmt.Printf("oid: %s, value: ", v.Name)
switch v.Type {
case g.OctetString:
fmt.Printf("%s\n", string(v.Value.([]byte)))
default:
fmt.Printf("%d\n", g.ToBigInt(v.Value))
}
return nil
}三、输出结果示例:
oid: .1.3.6.1.2.1.2.2.1.2.1, value: Software Loopback Interface 1
oid: .1.3.6.1.2.1.2.2.1.2.2, value: Microsoft 6to4 Adapter
oid: .1.3.6.1.2.1.2.2.1.2.3, value: WAN Miniport (L2TP)
oid: .1.3.6.1.2.1.2.2.1.2.4, value: Microsoft IP-HTTPS Platform Adapter
oid: .1.3.6.1.2.1.2.2.1.2.5, value: Microsoft Kernel Debug Network Adapter
oid: .1.3.6.1.2.1.2.2.1.2.6, value: Realtek USB FE Family Controller
...