Go 连接snmp获取数据

使用Go语言可以来连接snmp,监控开放snmp服务的主机的数据。使用的第三方包为gosnmp

安装

go get "github.com/alouca/gosnmp"
# 或者使用gopm
gopm get -v -g -u "github.com/alouca/gosnmp"

使用实例

简单使用:

package main

import (
    "github.com/alouca/gosnmp"
    "fmt"
)

func main()  {
    # 连接
    s, err := gosnmp.NewGoSNMP("192.168.3.111:161", "public", gosnmp.Version2c, 5)
    if err != nil {
        fmt.Println(err.Error())
    }
    # get 方式获取数据
    resp, err := s.Get(".1.3.6.1.2.1.1.1.0")
    if err == nil {
        for _, v := range resp.Variables {
            fmt.Print(v.Name + " --> ")
            fmt.Println(v.Value)
        }
    } else {
        fmt.Println(err.Error())
    }
}

输出结果

详细的snmp oid表可查看http://www.ttlsa.com/monitor/snmp-oid/

snmp oid中不但了Get方式的获取,还有一种Walk,返回一串数据。

walk方式

输出:

Last updated

Was this helpful?