Python/Python for Linux
[Python] paramiko와 timedelta를 조합하여 리눅스 로그 핸들링
Pydole
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')