-
[Python] paramiko와 timedelta를 조합하여 리눅스 로그 핸들링Python/Python for Linux 2018. 5. 24. 22:48
* 테스트 환경이기 때문에 root 접속 보안은 배제하고 포스팅
* seculog를 샘플로 하였지만 날짜 형식은 동일하기 때문에 다양한 리눅스 로그에 활용이 가능
# securelog 파일에서 특정일을 선택해서 출력이 가능. (로그가 없어서 4일전으로 출력)
day_ago = datetime.datetime.now() - datetime.timedelta(days=4) → 1 : 전일, 2 : 2일전
month = day_ago.strftime('%b') → 월 날짜 형식( 5월 : May ). log[0][2:]와 매칭
day = day_ago.strftime('%d') → 일 날짜 형식( 00 ). log[1]와 매칭
import paramiko import datetime day_ago = datetime.datetime.now() - datetime.timedelta(days=4) month = day_ago.strftime('%b') day = day_ago.strftime('%d') ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('host', username='', password='') stdin, stdout, stderr = ssh.exec_command('cat /var/log/secure') stdin.close() for line in stdout.read().splitlines(): log = str(line).split(' ') if log[0][2:] == month and log[1] == day: print(log[0][2:],log[1], ' '.join(log[2:]))
# 출력로그를 파일로 저장. (자동화가 가능하다면 일 단위 백업을 구현)
for line in stdout.read().splitlines(): log = str(line).split(' ') if log[0][2:] == month and log[1] == day: with open(log[0][2:]+'_'+log[1]+'_Seculog.txt', 'a') as f: f.write(log[0][2:]+' '+log[1]+' '+' '.join(log[2:])+'\n')
'Python > Python for Linux' 카테고리의 다른 글
[ CentOS ] Python pip install (0) 2019.04.13 [Python] linux ping check(ICMP) program (0) 2019.04.09 [Python] CentOS 7 Python3 Install and Symbolc link (0) 2019.03.28 [Python] Linux 디렉토리와 파일 리포팅 (0) 2019.03.27 [Python] Linux에서 python 실행파일 만들기 (0) 2019.03.27 [Python] paramiko를 이용한 리눅스 sftp 다운로드 (0) 2018.05.13 [Python] paramiko 모듈을 이용한 리눅스 디스크 사용량 체크 (0) 2018.05.13 [Python] paramiko를 이용한 linux(리눅스) ssh 접속 (0) 2018.05.13