python检查交换机端口状态_python 正则表达式 交换机接口配置匹配问题

本文介绍了使用Python正则表达式解析交换机接口配置的挑战,特别是当某些配置项如'dot1x'不是每个接口都存在时。目标是匹配接口名称、接入类型、VLAN ID、'dot1x'状态和'spanning-tree portfast'设置。通过调整正则表达式,最终实现了完整匹配,包括那些缺失特定配置项的接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标字符s='''!interfaceFastEthernet0/46!interfaceFastEthernet0/47switchportaccessvlan221switchportmodeaccessspanning-treeportfast!interfaceFastEthernet0/48switchportacces...

目标字符

s = '''!

interface FastEthernet0/46

!

interface FastEthernet0/47

switchport access vlan 221

switchport mode access

spanning-tree portfast

!

interface FastEthernet0/48

switchport access vlan 220

switchport mode access

dot1x port-control auto

spanning-tree portfast

!

interface GigabitEthernet0/1

switchport trunk encapsulation dot1q

switchport mode trunk

!'''

p = '(?:interface\s)((?:\w+)+\d+(?:/\d+)*)(?:\n\sswitchport\s)?([a|t]\w+)?(?:\s\w+\s)?(\d+)?(?:\n)?(?:.+\n)?\s?(dot1x)?'

re.findall(p,s)

输出结果是:

[('FastEthernet0/46', '', '', ''), ('FastEthernet0/47', 'access', '221', ''), ('FastEthernet0/48', 'access', '220', 'dot1x'), ('GigabitEthernet0/1', 'trunk', '', '')]

当要想再增加一个匹配项时:

p = '(?:interface\s)((?:\w+)+\d+(?:/\d+)*)(?:\n\sswitchport\s)?([a|t]\w+)?(?:\s\w+\s)?(\d+)?(?:\n)?(?:.+\n)?\s?(dot1x)?(?:.+\n)?\s?(spanning-tree)?'

输出结果是:

[('FastEthernet0/46', '', '', '', ''), ('FastEthernet0/48', 'access', '220', 'dot1x', 'spanning-tree'), ('GigabitEthernet0/1', 'trunk', '', '', '')]

少了('FastEthernet0/47', 'access', '221', '')

需要的信息:FastEthernet0/48,access|truck,VlanId,dot1x,spanning-tree这些项目,因dot1x不是每个接口都出现,故影响到spanning-tree的匹配。

求助,如何能匹配完美,谢谢。

p = '(?:interface\s)((?:\w+)+\d+(?:/\d+)*)\r\n(?:!|\sswitchport\s([at]\w+)(?:\s\w+\s)(\d+)?(?:\r\n)?(?:.+\r\n)?(?:\s)?(dot1x .+[^\r\n])?(?:\r\n)?(?:\s)?(spanning-tree portfast)?)'

('FastEthernet0/1', 'access', '211', '', 'spanning-tree portfast')

('FastEthernet0/4', 'access', '221', 'dot1x port-control auto ', 'spanning-tree portfast')

以上采用python第三方cisco包完成与交换机交互。

交换机show running-config后进行匹配,每行已\r\n结尾。

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值