<log.txt>
서비스명::로그위치::로그검색어
FTP::/var/log/xferlog::none
DHCP::/var/log/messages::dhcp
DNS::/var/log/messages::named
SSH::/var/log/secure::sshd
<log_info.py>
# log_info.py
class Log_info_class:
def __init__(self,service):
#로그 정보파일 리스트화
self.log_location = 0
self.log_info = []
self.log_info_list = []
with open("./call_log_pac/log.txt", "r", encoding = "UTF-8") as self.log_info_file:
self.log_info_all = self.log_info_file.read()
# self.log_info_file = open("./log.txt", "r", encoding #= "UTF-8")
# self.log_info_all = self.log_info_file.read()
# self.log_info_file.close()
self.log_info_list = self.log_info_all.split("\n")
for i in range(1, len(self.log_info_list)):
self.log_info.append(self.log_info_list[i].split("::"))
for j in range(len(self.log_info_list)-1):
if service in self.log_info_list[j+1]:
self.log_location = j
def log_info_return(self):
return self.log_info
def find_log_line(self):
return self.log_location
log.txt에서 정보를 불러와서 정보를 가공하는 모듈
<call_log.py>
# call_log.py
from call_log_pac.log_info import *
# 클래스 생성
class Call_log:
# 생성자. 로그 가공.
def __init__(self, service):
# 로그 정보파일 리스트화
a = Log_info_class(service)
self.log_info = a.log_info_return()
self.log_location = a.find_log_line()
self.log_file = open(self.log_info[self.log_location][1], "r", encoding = "UTF-8")
self.log_all = self.log_file.read()
self.log_file.close()
self.log_all = str(self.log_all)
self.log_list = self.log_all.split("\n")
# 로그 읽기 함수.
def print_log(self):
for i in self.log_list:
print(i)
# 공통로그폴더일경우 오버라이딩.
class Call_log_service(Call_log):
def print_log(self):
for i in self.log_list:
if self.log_info[self.log_location][2] in i:
print(i)
<main.py>
# main.py
from call_log_pac.log_info import *
from call_log_pac.call_log import *
service = input()
log_info = Log_info_class(service)
log_info_list = log_info.log_info_return()
log_line = log_info.find_log_line()
if log_info_list[log_line][2] == "none":
a = Call_log(service)
else:
a = Call_log_service(service)
a.print_log()
서비스 명을 입력하게 되면 가공된 정보를 log.info로부터 받아와서 키워드 검색이 필요하지 않은 경우 바로 해당 로그 파일을 출력하게 되며 키워드 검색이 필요하지 않은 경우 해당 로그 파일에서 키워드가 존재하는 라인만 출력.
'프로그래밍 및 코딩 > Python' 카테고리의 다른 글
SR_SSH Tool 제작 (0) | 2024.09.02 |
---|---|
while문 예제(1) (0) | 2024.08.09 |
for문 예제(2) (0) | 2024.08.09 |
for문 예시(1) (0) | 2024.08.05 |
파일 입력 예시 (0) | 2024.08.05 |
<log.txt>
서비스명::로그위치::로그검색어
FTP::/var/log/xferlog::none
DHCP::/var/log/messages::dhcp
DNS::/var/log/messages::named
SSH::/var/log/secure::sshd
<log_info.py>
# log_info.py
class Log_info_class:
def __init__(self,service):
#로그 정보파일 리스트화
self.log_location = 0
self.log_info = []
self.log_info_list = []
with open("./call_log_pac/log.txt", "r", encoding = "UTF-8") as self.log_info_file:
self.log_info_all = self.log_info_file.read()
# self.log_info_file = open("./log.txt", "r", encoding #= "UTF-8")
# self.log_info_all = self.log_info_file.read()
# self.log_info_file.close()
self.log_info_list = self.log_info_all.split("\n")
for i in range(1, len(self.log_info_list)):
self.log_info.append(self.log_info_list[i].split("::"))
for j in range(len(self.log_info_list)-1):
if service in self.log_info_list[j+1]:
self.log_location = j
def log_info_return(self):
return self.log_info
def find_log_line(self):
return self.log_location
log.txt에서 정보를 불러와서 정보를 가공하는 모듈
<call_log.py>
# call_log.py
from call_log_pac.log_info import *
# 클래스 생성
class Call_log:
# 생성자. 로그 가공.
def __init__(self, service):
# 로그 정보파일 리스트화
a = Log_info_class(service)
self.log_info = a.log_info_return()
self.log_location = a.find_log_line()
self.log_file = open(self.log_info[self.log_location][1], "r", encoding = "UTF-8")
self.log_all = self.log_file.read()
self.log_file.close()
self.log_all = str(self.log_all)
self.log_list = self.log_all.split("\n")
# 로그 읽기 함수.
def print_log(self):
for i in self.log_list:
print(i)
# 공통로그폴더일경우 오버라이딩.
class Call_log_service(Call_log):
def print_log(self):
for i in self.log_list:
if self.log_info[self.log_location][2] in i:
print(i)
<main.py>
# main.py
from call_log_pac.log_info import *
from call_log_pac.call_log import *
service = input()
log_info = Log_info_class(service)
log_info_list = log_info.log_info_return()
log_line = log_info.find_log_line()
if log_info_list[log_line][2] == "none":
a = Call_log(service)
else:
a = Call_log_service(service)
a.print_log()
서비스 명을 입력하게 되면 가공된 정보를 log.info로부터 받아와서 키워드 검색이 필요하지 않은 경우 바로 해당 로그 파일을 출력하게 되며 키워드 검색이 필요하지 않은 경우 해당 로그 파일에서 키워드가 존재하는 라인만 출력.
'프로그래밍 및 코딩 > Python' 카테고리의 다른 글
SR_SSH Tool 제작 (0) | 2024.09.02 |
---|---|
while문 예제(1) (0) | 2024.08.09 |
for문 예제(2) (0) | 2024.08.09 |
for문 예시(1) (0) | 2024.08.05 |
파일 입력 예시 (0) | 2024.08.05 |