python工具–获取盛科交换机端口模块类型,波长,传输距离等信息

个人博客地址

http://www.darkghost.life

交换机端口模块信息对应的OID节点为各厂商私有节点,获取其他厂商信息需要把OID进行替换

1 #! /usr/bin/env python
 2 #-*-coding:utf-8-*-
 3 import re,signal,os,subprocess,sys
 4 class module:
 5     def __init__(self,ip,community):
 6         self.p = 'snmpwalk -v2c -c %s %s 1.3.6.1.4.1.27975.37.1.10.1.1.1'%(community,ip)
 7         self.ip = ip
 8         self.community = community
 9     def cmd(self,p):
10         m_type = 'snmpwalk -v2c -c %s %s 1.3.6.1.4.1.27975.37.1.10.1.1.1.%s'%(self.community,self.ip,p)
11         nm = 'snmpwalk -v2c -c %s %s 1.3.6.1.4.1.27975.37.1.10.1.1.5.%s'%(self.community,self.ip,p)
12         length = 'snmpwalk -v2c -c %s %s 1.3.6.1.4.1.27975.37.1.10.1.1.6.%s'%(self.community,self.ip,p)
13         pn = 'snmpwalk -v2c -c %s %s 1.3.6.1.4.1.27975.37.1.10.1.1.3.%s'%(self.community,self.ip,p)
14         return m_type,nm,length,pn
15     def port(self):
16         module_type = subprocess.Popen(self.p,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0]
17         li = []
18         module_type= module_type.decode('utf8')
19         module_type = module_type.replace('SNMPv2-SMI::enterprises.27975.37.1.10.1.1.1.','').split('\n')
20         for x in module_type:
21             if len(x)>10:
22                 li.append(x.split('=')[0].strip())
23         return li
24     def value(self,cmd,t_ype):
25         li = []
26         value =  subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0]
27         value = value.decode('utf8')
28         value = re.findall('=.+',value)[0].split(':')[1].strip()
29         li.append({t_ype:value})
30         return li
31     def get(self):
32         dic = {}
33         getport = self.port()
34         m_typeli = []
35         nmli = []
36         lengthli=[]
37         pnli=[]
38         for x in getport:
39             m_type,nm,length,pn = self.cmd(x)
40             m_typeli.append(m_type)
41             nmli.append(nm)
42             lengthli.append(length)
43             pnli.append(pn)
44         for t in m_typeli:
45             index = m_typeli.index(t)
46             key = getport[index]
47             ret = self.value(t,'类型')
48             dic[key]=ret
49         for n in nmli:
50             index = nmli.index(n)
51             key = getport[index]
52             ret = self.value(n,'波长')
53             dic[key].append(ret)
54         for l in lengthli:
55             index = lengthli.index(l)
56             key = getport[index]
57             ret = self.value(l,'传输距离')
58             dic[key].append(ret)
59         for pn in pnli:
60             index = pnli.index(pn)
61             key = getport[index]
62             ret = self.value(pn,'PN')
63             dic[key].append(ret)
64         return dic
65 if __name__  == "__main__":
66     try:
67         host = sys.argv[1]
68         community = sys.argv[2]
69         sw = module(host,community)
70         ret = sw.get()
71         print('----------------------------------%s 端口模块信息------------------------------------'%host)
72         for x in ret:
73             print('port%s'%x,ret[x])
74     except:
75         print('use:')
76         print('    ./centecosmodule.py host community')
77         print('like:')
78         print('    ./centecosmodule.py 10.0.3.102 a000123A')

以驱魔为理想,为生计而奔波

Original: https://www.cnblogs.com/darkchen/p/14966510.html
Author: 奔波的驱魔人
Title: python工具–获取盛科交换机端口模块类型,波长,传输距离等信息

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/714061/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 全新升级的AOP框架Dora.Interception[5]: 实现任意的拦截器注册方式

    Dora.Interception(github地址,觉得不错不妨给一颗星)提供了两种拦截器注册方式,一种是利用标注在目标类型、属性和方法上的InterceptorAttribut…

    技术杂谈 2023年5月31日
    098
  • Badger简单使用

    badger 是 dgraph 开源的 LSMTree 的 KV 引擎,它相比 leveldb 有 KV 分离、事务、并发合并等增强,是 go 生态中比较生产级的存储引擎了。 要开…

    技术杂谈 2023年7月24日
    063
  • HTML5封装成桌面应用

    HTML5封装成桌面应用1、准备工作:2、封装3、打包1、准备工作:web项目地址nw.js 下载网址reshacker 下载地址Inno Setup(度娘自行下载安装,有中文版)…

    技术杂谈 2023年5月31日
    090
  • [Python]-sklearn模块-机器学习Python入门《Python机器学习手册》-04-处理数值型数据

    这本书类似于工具书或者字典,对于python具体代码的调用和使用场景写的很清楚,感觉虽然是工具书,但是对照着做一遍应该可以对机器学习中python常用的这些库有更深入的理解,在应用…

    技术杂谈 2023年7月10日
    087
  • 存储引擎?

    InnoDB引擎,最重要,使用最广泛的存储引擎。被用来设计处理大量短期事务,具有高性能和自动崩溃恢复的特性。MyISAM引擎,不支持事务和行级锁,崩溃后无法安全恢复。 Java P…

    技术杂谈 2023年5月31日
    0101
  • Log4j 日志框架

    Log4j(Log for java)是 Apache 的一个开源项目,通过使用 Log4j,可以控制日志信息输送的目的地是控制台或文件等,也可以控制每一条日志的输出格式。通过定义…

    技术杂谈 2023年7月11日
    075
  • Jenkinsfile Pipeline 使用 SSH 连接

    为了在 Jenkinsfile 的命令中使用 SSH,我们不得不通过一些设置… 前提 首先你需要将用到的 SSH 私钥保存到 Jenkins 的凭据中,这样你会获得一个…

    技术杂谈 2023年7月11日
    066
  • 面向对象ooDay7

    .精华笔记:1)成员内部类: 应用率不高1.1)类中套类,外面的称为外部类,里面的称为内部类1.2)内部类通常只服务于外部类,对外不具备可见性1.3)内部类对象通常在外部类中创建1…

    技术杂谈 2023年7月11日
    060
  • Postman 正确使用姿势

    前言: 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 简介: Postman是一个接口测试工具,在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的…

    技术杂谈 2023年7月11日
    060
  • 景深计算公式

    δ——容许弥散圆直径f——镜头焦距F——镜头的拍摄光圈值L——对焦距离ΔL1——前景深ΔL2——后景深ΔL——景深 从上图表公式(1)和(2)可以看出,后景深>前景深。 景深…

    技术杂谈 2023年5月31日
    0118
  • TCP三次握手四次挥手

    最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,…

    技术杂谈 2023年7月24日
    093
  • 整理一些Windows桌面运维常用的命令,并且整合成脚本

    github地址:alittlemc/toy 名字叫toy吧,没有啥技术含量,帮不了大忙,但是可以作为在一旁递工具的小弟,还是可减少自己一定的工作量的,毕竟有一些太长的命令也不是很…

    技术杂谈 2023年6月22日
    0111
  • 显微镜的景深

    现在常用的是与实验结果比较一致的Berek 公式焦深也叫景深,其定义是:指使用显微镜观察和拍摄样品表面时,从对准焦点的位置开始,改变物镜与样品表面的距离时,对焦能够保持清晰的范围。…

    技术杂谈 2023年5月31日
    0110
  • DBExplorer使用和修改整理

    2 DBExplorer介绍 DBExplorer是一个B/S架构的Web程序,基于JDBC连接数据库服务。它采用Extjs构建GUI,因此也具有和C/S程序一样良好的使用体验。 …

    技术杂谈 2023年7月24日
    098
  • python数据可视化-matplotlib入门(1)–安装及绘制简单的曲线

    一、安装matplotlib 1)由于已安装anaconda,可直接打开anaconda prompt,再用命令pip install matplotlib进行安装,因镜像问题,可…

    技术杂谈 2023年7月25日
    088
  • VS Code vetur 插件离线下载安装

    https://marketplace.visualstudio.com/vscode 其中需要下载的是: VeturPine WuVue tooling for VS Code …

    技术杂谈 2023年6月1日
    081
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球