首页
python
Win桌面应用自动化pywinauto
pywinauto遍历展示程序的所有菜单项
Python3使用串口
Python字符串处理
Python3实现配置文件差异对比(键值对key=value的形式)
正则
正则匹配两个字符之间的字符串
正则提取markdown中图片链接
正则表达式基本知识
字符串-正则实例
Python生成8位随机字符串的一些方法
python3批量ping检测
python3检测一批主机ip的tcp端口
Python3--DNS
3D人体骨架检测(mediapipe)
Python-网络
检测到win电脑断网就发出告警声音
Python编写的DNS服务可靠性测试程序
Python编写的TCP/UDP端口探测程序
Python抓包-Pyshark
并发扫描TCP、UDP端口
Python-DHCP
端口的问题以及绑定端口(Python)
VSCode编辑器
python远程开机工具
Pyhton3--Win注册表
开源IT运维项目
python知识点
Python开源运维项目集合
python3备份交换机配置
Python3使用snmp获取H3C交换机arp表
Python检测tcp端口状态并发送到企微群
Python3使用smtp发邮件
Python3使用smtp发邮件(带附件)
Python3拉取微软AD域所有用户信息
Python3使用微软AD域账号认证
自动更新公网域名的解析(阿里云)
每日定时推送Excel中排班表信息到企微群
Django
Django模板标签
Django在发送POST请求时返回403错误
Django-mysql数据库条件查询
uwsgi 配置 python virtualenv 虚拟环境目录 ( ini 配置)
常用收藏
python3数据类型转换
python处理文本
txt每行一个字符串_用英文逗号连接
txt_匹配并拆分出需要字符串
python获取日期时间
python执行linux命令的三种方式
python使用ssh连接到linux服务器执行命令
本文档由 内网文摘 发布,转载请注明出处
-
+
首页
Python3使用snmp获取H3C交换机arp表
修改为真实的 ip、只读团体字、oid,如`entaddr = walk("100.50.1.1", "test@123", oTable["H3CARP"])` ```python # -*- coding:utf-8 -*- import sys import time #snmp协议获取h3c核心交换机arp表,保存到txt文件 #运行用时50秒左右 #有时会报错提示超时,多运行几次会好 try: from pysnmp.entity.rfc3413.oneliner import cmdgen except Exception as e: print("You need to download pysnmp and pyasn1", e) sys.exit(1) oTable = { "entLogicalCommunity": (1, 3, 6, 1, 2, 1, 47, 1, 2, 1, 1, 4), "entPhysicalModelName": (1, 3, 6, 1, 2, 1, 47, 1, 1, 1, 1, 13, 1), "entLogicalDescr": (1, 3, 6, 1, 2, 1, 47, 1, 2, 1, 1, 2), "dot1dBasePort": (1, 3, 6, 1, 2, 1, 17, 1, 4, 1, 1), "dot1dTpFdbPort": (1, 3, 6, 1, 2, 1, 17, 4, 3, 1, 2), "dot1dBasePortIfIndex": (1, 3, 6, 1, 2, 1, 17, 1, 4, 1, 2), "dot1dTpFdbAddress": (1, 3, 6, 1, 2, 1, 17, 4, 3, 1, 1), "ifDescr": (1, 3, 6, 1, 2, 1, 2, 2, 1, 2), "ifName": (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 1), "ifSpeed": (1, 3, 6, 1, 2, 1, 2, 2, 1, 5), "ifAlias": (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 18), "sysName": (1, 3, 6, 1, 2, 1, 1, 5, 0), "sysDescr": (1, 3, 6, 1, 2, 1, 1, 1, 0), "dot3StatsDuplexStatus": (1, 3, 6, 1, 2, 1, 10, 7, 2, 1, 19), "ifAdminStatus": (1, 3, 6, 1, 2, 1, 2, 2, 1, 7), "ifOperStatus": (1, 3, 6, 1, 2, 1, 2, 2, 1, 8), "atPhysAddress": (1, 3, 6, 1, 2, 1, 3, 1, 1, 2), "ipAdEntAddr": (1, 3, 6, 1, 2, 1, 4, 20, 1, 1), "ipAdEntIfIndex": (1, 3, 6, 1, 2, 1, 4, 20, 1, 2), "ARP": (1, 3, 6, 1, 2, 1, 3, 1, 1, 2), "HW": (1, 3, 6, 1, 2, 1, 4, 22, 1, 2), "H3CARP": (1, 3, 6, 1, 2, 1, 4, 22, 1, 2) } #[[ObjectType(ObjectIdentity(<ObjectName value object, tagSet <TagSet object, tags 0:0:6>, payload [1.3.6.1.2.1.4.22...18636.10.100.1.1]>), <OctetString value object, tagSet <TagSet object, tags 0:0:4>, subtypeSpec <ConstraintsIntersection object, consts <ValueSizeConstraint object, consts 0, 65535>>, encoding iso-8859-1, payload [0x00900b6fbd60]>)], # # [ObjectType(ObjectIdentity(<ObjectName value object, tagSet <TagSet object, tags 0:0:6>, payload [1.3.6.1.2.1.4.22...18636.10.100.1.2]>), <OctetString value object, tagSet <TagSet object, tags 0:0:4>, subtypeSpec <ConstraintsIntersection object, consts <ValueSizeConstraint object, consts 0, 65535>>, encoding iso-8859-1, payload [0xecd68a19a852]>)]] #[['10.100.1.1', '0x00900b6fbd60'], ['10.100.1.2', '0xecd68a19a852']] def walk(dswitch, commVlan, oid ): """This function will return the table of OID's that I am walking""" errorIndication, errorStatus, errorIndex, \ generic = cmdgen.CommandGenerator().nextCmd(cmdgen.CommunityData('my-agent', commVlan, 1), \ cmdgen.UdpTransportTarget((dswitch, 161)), oid, maxRows=10000) try: if errorIndication or errorStatus or errorIndex: print(errorIndication, errorStatus, errorIndex, generic) except: return errorIndication return generic # if errorIndication: # print(generic) # return errorIndication # return generic # entaddr = walk("100.50.37.50", "public", oTable["ARP"]) entaddr = walk("100.50.1.1", "test@123", oTable["H3CARP"]) print(str(entaddr), type(entaddr)) #type=list if str(entaddr) == "No SNMP response received before timeout": print("超时前未收到SNMP响应") else: arp_table = [] for i in entaddr: temp = '' for j in i: print(str(j)) # SNMPv2-SMI::mib-2.4.22.1.2.18636.10.100.1.1 = 0x00900b6fbd60 temp += str(j) #print(temp) # SNMPv2-SMI::mib-2.4.22.1.2.18636.10.100.1.1 = 0x00900b6fbd60 #time.sleep(9999) #replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。 temp = temp.replace("SNMPv2-SMI::mib-2.4.22.1.2.", "") temp = temp[temp.find('.')+1:] temp = temp.split(' = ') arp_table.append(temp) #print(arp_table) with open('ipmac_str.txt', 'a', encoding='utf-8') as df: for i in arp_table: mywr = '='.join(i) df.write(mywr) df.write('\n') ``` 生成的ipmac_str.txt内容格式如下 ```python 192.168.1.231=0x005056839497 192.168.1.232=0x005056837450 192.168.1.233=0x005056835e89 ```
local
2021年9月28日 18:33
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 LocalNetwork
LocalNetwork
是由mrdoc开源
LocalNetwork.cn
修改的在线文档系统,作为个人和小型团队的云笔记、文档和知识库管理工具。
如果此文档给你或你的团队带来了帮助,欢迎支持作者持续投入精力更新和维护!内网文摘 & LocalNetwork
>>>主页
logo
logo
下载Markdown文件
分享
链接
类型
密码
更新密码