交换机端口模块信息对应的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')

python工具--获取盛科交换机端口模块类型,波长,传输距离等信息的更多相关文章

  1. 用python+selenium获取北上广深成五地PM2.5数据信息并按空气质量排序

    从http://www.pm25.com/shenzhen.html抓取北京,深圳,上海,广州,成都的pm2.5指数,并按照空气质量从优到差排序,保存在txt文档里 代码如下: #coding=utf ...

  2. 爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,loads,dump,load方法介绍

    爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,load ...

  3. 使用python的email、smtplib、poplib模块收发邮件

    使用python的email.smtplib.poplib模块收发邮件 一封电子邮件的旅程是: MUA:Mail User Agent——邮件用户代理.(即类似Outlook的电子邮件软件) MTA: ...

  4. 【NLP】Python NLTK获取文本语料和词汇资源

    Python NLTK 获取文本语料和词汇资源 作者:白宁超 2016年11月7日13:15:24 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集 ...

  5. python基础-第六篇-6.2模块

    python之强大,就是因为它其提供的模块全面,模块的知识点不仅多,而且零散---一个字!错综复杂 没办法,二八原则抓重点咯!只要抓住那些以后常用开发的方法就可以了,哪些是常用的?往下看--找答案~ ...

  6. 10.Python之Ansible自动化运维常用模块

    Ansible中文权威文档:http://www.ansible.com.cn/docs/ Ansible从入门到精通:https://www.bilibili.com/video/av3361175 ...

  7. python time,random,os,sys,序列化模块

    一.time模块 表示时间的三种方式 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的时间字符串: (1)时间戳(timestamp) :通常来说,时间戳 ...

  8. Python开发【第*篇】【模块】

    模块分为三种: 自定义模块 第三方模块 内置模块 1.模块导入 import model from model.xx.xx import xx from model.xx.xx import xx a ...

  9. 专为渗透测试人员设计的 Python 工具大合集

    如果你对漏洞挖掘.逆向工程分析或渗透测试感兴趣的话,我第一个要推荐给你的就是Python编程语言.Python不仅语法简单上手容易,而且它还有大量功能强大的库和程序可供我们使用.在这篇文章中,我们会给 ...

随机推荐

  1. 学习SVN01

    SVN服务器搭建实录   第一章  SVN介绍 1.1 什么是SVN(subversion) SVN是近年来崛起的非常优秀的版本管理工具,与CVS管理工具一样,SVN是一个固态的跨平台的开源的版本控制 ...

  2. css3中什么时候用transition什么时候用animation实现动画

    在css3中transition和animation都可以实现动画效果,但是我们什么时候用transition,什么时候用animation. 当有事件触发动画的时候我们就用transition.比如 ...

  3. validator API文档

    如何使用 引入 <script src="../node_modules/jquery/dist/jquery.js"></script> <scri ...

  4. css 迷惑的position

    迷惑的position 小加发现实际开发中position使用频率很高,但很多人却对position不是很了解,导致开发中出现各种问题,现在让我门一起来看看这个迷惑的position吧~ static ...

  5. notification(浏览器通知)

    一.notification简介 Web Notifications是HTML5 的一个特性,目前我知道的有谷歌浏览器和windows edge对它进行了支持,用于向用户配置和显示桌面通知. 二.no ...

  6. PAT B1076 Wifi密码

    题目描述: 下面是微博上流传的一张照片:"各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1:B-2:C-3:D-4:请同 ...

  7. YOLO系列梳理(一)YOLOv1-YOLOv3

    ​ 前言 本文是YOLO系列专栏的第一篇,该专栏将会介绍YOLO系列文章的算法原理.代码解析.模型部署等一系列内容.本文系公众号读者投稿,欢迎想写任何系列文章的读者给我们投稿,共同打造一个计算机视觉技 ...

  8. Spring核心 IoC和AOP原理

    1. 什么是Spring Spring是一个轻量的Java开源框架,它简化了应用开发,实现基于POJO的编程模型.它的两大核心是:IoC(控制反转),AOP(面向切面编程). 2. IoC控制反转 简 ...

  9. Azure Virtual Desktop(一)创建配置管理

    一,引言 Azure 虚拟创面是一项 Azure 服务,可以让我们管理: 1)VDI(虚拟桌面基础架构) 2)云端的 RDSH:RDSH 是 RDS(远程桌面服务)中的一个角色.这些类型的服务器用于托 ...

  10. 省掉80%配置时间,这款Mock神器免费又好用

    前端的痛苦 作为前端,最痛苦的是什么时候? 每个迭代,需求文档跟设计稿都出来了,静态页面唰唰两天就做完了.可是做前端又不是简单地把后端吐出来的数据放到页面上就完了,还有各种前端处理逻辑啊. 后端接口还 ...