@fgpoliciestocsv.py 파일 필요
import os
import argparse
import subprocess
parser = argparse.ArgumentParser(description='Log File -> Cfg File')
parser.add_argument('-p', metavar='[File_path]', required=True, help='File path', type=str)
args = parser.parse_args()
path = args.p # 디렉토리 경로
s_ch = os.listdir(path) # 디렉토리 내 파일 리스트
c_ch = [] # .log 확장자 파일 리스트
f_name_arg = [] # 파일 이름 리스트
PATH_DIR = './CFG'
# 디렉토리 생성
def createDir(DIR):
if not os.path.exists(DIR):
os.makedirs(DIR)
createDir(PATH_DIR)
for i in range(0,len(s_ch)):
f_name, f_ext = os.path.splitext(s_ch[i]) # 파일 이름과 확장자 분리
if f_ext == '.log': # .log 확장자 파일 분리
c_ch.append(s_ch[i])
f_name_arg.append(f_name)
for x in range(0,len(c_ch)):
cut_count = 0 # 컷팅 카운터
one_count = [] # 첫번째 컷팅 카운터 저장
two_count = [] # 마지막 컷팅 카운터 저장
with open(path + '/' + c_ch[x], 'r', encoding='utf-8') as file:
count = 0
data = file.readlines()
for line in data:
count += 1
if 'config firewall policy' in line:
one_count.append(count)
with open(path + '/' + f_name_arg[x] + '.log', 'w', encoding='utf-8') as file:
count = 0
file.seek(0)
for line in data:
file.write('')
count += 1
if int(one_count[0]) -1 < count:
file.write(line)
with open(path + '/' + c_ch[x], 'r', encoding='utf-8') as file:
count = 0
data = file.readlines()
for line in data:
count += 1
if 'config' in line:
two_count.append(count)
with open(PATH_DIR + '/' + f_name_arg[x] + '.cfg', 'w', encoding='utf-8') as file:
count = 0
file.seek(0)
for line in data:
count += 1
if int(two_count[1]) > count:
file.write(line)
else:
file.truncate()
PATH_DIR_csv = './CSV'
createDir(PATH_DIR_csv)
for n in range(0,len(c_ch)):
subprocess.call('fgpoliciestocsv.py -i ' + PATH_DIR + '/' + f_name_arg[n] + '.cfg ' + '-o ' + PATH_DIR_csv + '/' + f_name_arg[n] + '.csv', shell=True)
'Python' 카테고리의 다른 글
IOS version 추출 (2) | 2023.02.01 |
---|---|
Auto_Command Gui (0) | 2022.12.02 |
R&S 파이썬 자동화_Input Command (0) | 2022.08.29 |
Fortigate 방화벽 Hit Count 수집 (export 안되는 버전 전용) (수정1) (0) | 2022.08.19 |
R&S 파이썬 자동화 (0) | 2022.08.12 |