热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Golang实现获取SNMPV3数据

背景:批量初始化机器的时候经常有个别机器SNMP连接不通导致机器调度不生效,把功能封装成借口,上线前可以批量检测。snmp的文档比较少,抄袭还严重,做个笔记记录一下使用方法。代码D

背景:批量初始化机器的时候经常有个别机器SNMP连接不通导致机器调度不生效,把功能封装成借口,上线前可以批量检测。

snmp的文档比较少,抄袭还严重,做个笔记记录一下使用方法。

代码Demo:

package main
import (
"fmt"
g "github.com/gosnmp/gosnmp"
"log"
"net/http"
"time"
)
func snmpget(ip string)[]byte{
snmp := &g.GoSNMP{
Target: ip,
Port: 161,
Community: "public",
Version: g.Version3,
Timeout: time.Duration(30) * time.Second,
SecurityModel: g.UserSecurityModel,
MsgFlags: g.AuthNoPriv, //Authentication and no privacy
SecurityParameters: &g.UsmSecurityParameters {
UserName: "myUserName", //输入你设置的snmp用户名
AuthenticationProtocol: g.MD5, //经过身份验证的SnmpV3连接正在使用的身份验证协议。
AuthenticationPassphrase: "mypass", //输入你公司的密码
},
}
err := snmp.Connect()
if err != nil {
log.Fatalf("Connect() err: %v", err)
}
defer snmp.Conn.Close()
oids := []string{"1.3.6.1.2.1.1.5.0"}
result, err := snmp.Get(oids)
if err != nil {
log.Fatalf("Get() err: %v", err)
}
fmt.Println(string(result.Variables[0].Value.([]byte)))
return result.Variables[0].Value.([]byte)
//for i, v := range result.Variables {
// fmt.Printf("%d. oid: %s ", i, v.Name)
// switch v.Type{
// case g.OctetString:
// fmt.Printf("string: %s\n", string(v.Value.([]byte)))
// default:
// fmt.Printf("number: %d\n", g.ToBigInt(v.Value))
// }
//}
}
func handle(w http.ResponseWriter,r *http.Request) {
var ip string
r.ParseForm()
for k,v := range r.Form{
if k == "ip" {
ip = v[0]
}
}
if ip != ""{
hostname := snmpget(ip)
w.Write(hostname)
}else {
w.Write([]byte("please input ip"))
}
}
func main() {
http.HandleFunc("/snmp",handle)
http.ListenAndServe("0.0.0.0:8005",nil)
}


推荐阅读
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
author-avatar
batman@zhou
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有