python - 只提取接口父行
问题描述
我正在使用 cisconfparse 模块和正则表达式编写一个 python 代码来循环遍历几个配置文件并找到配置了 dot1x pae 身份验证器和身份验证端口控制行的访问端口接口。如果我从返回的对象循环遍历每个接口,我就能够提取配置语句块。有没有办法只检索接口 GigabitEtherenet 线的第一行?
interface GigabitEthernet1/1
description USER_INTERFACE
switchport access vlan 19
switchport mode access
switchport port-security aging time 1
interface GigabitEthernet1/2
description USER_INTERFACE
switchport access vlan 19
switchport mode access
switchport voice vlan 154
authentication port-control auto
mab
块引用
import os
import re
import csv
from ciscoconfparse import CiscoConfParse
file_exists = os.path.isfile(r'c:\users\lang\documents\result.csv')
if not file_exists:
with open (r'c:\users\lang\documents\result.csv', 'w', newline='') as csv_file:
Header = ['Device', 'Vul ID', 'Exception', 'Status', 'Code', 'Severity', 'Reason']
writer = csv.DictWriter(csv_file, fieldnames=Header)
writer.writeheader()
def check_services():
configs = (r'C:\Users\Lang\Documents\Tutorials\Python\Scripts\NetworkAudit\Data')
for config in os.listdir(configs):
if config.endswith(".txt"):
filename = os.path.split(config)
#print(filename[1])
parse = CiscoConfParse(config)
intfs = parse.find_blocks('^\sswitchport\smode\saccess')
for int in intfs:
print(int)
dot1x_pae = re.findall('dot1x pae authenticator', int)
if(not dot1x_pae):
with open (r'c:\users\lang\documents\result.csv',
'a', newline='') as csv_file:
Header = ['Device', 'Vul ID', 'Exception',
'Status', 'Code', 'Severity', 'Reason']
writer = csv.DictWriter(csv_file,
fieldnames=Header)
writer.writerow({'Device':filename[1], 'Vul ID':
'V-220649', 'Exception': 'dot1x not configured', \
'Status': 'Failed', 'Code': '1',
'Severity': 'High', \
'Reason': int})
else:
with open (r'c:\users\lang\documents\result.csv',
'a', newline='') as csv_file:
Header = ['Device', 'Vul ID', 'Exception',
'Status', 'Code', 'Severity', 'Reason']
writer = csv.DictWriter(csv_file,
fieldnames=Header)
writer.writerow({'Device':filename[1], 'Vul ID':
'V220649', 'Exception': 'dot1x configured', \
'Status': 'Pass', 'Code': '1',
'Severity': 'High', \
'Reason': 'dot1x configured'})
check_services()
解决方案
推荐阅读
- c++ - 无法在用户定义的类型上使用 std::apply
- java - 使用 apache poi 对数千个单元格进行自定义数据验证
- flutter - Flutter webview - HTML / JS复制到剪贴板不起作用
- html - React Dynamic Template with Form Control - 自动更正 HTML 标签
- ios - 重定向时未调用 URLSession willPerformHTTPRedirection
- python - Pyqt5 警告:QObject::connect: 无法将“QTextCursor”类型的参数排队
- python - 如何从 Python 中的列中拆分和提取位置名称
- r - ggplot2 版本的 shepard 情节,即 vegan::stressplot()?
- react-native - 在内联图像周围环绕多行文本
- html - 我无法使用页面打印配置 PDF