9월에 sshd 프로세스에서는 무슨 일이 있었을까? 알아보고 싶은데 로그가 너무 많다.
sshd 프로세스 필터링 결과 |
물론 이전 글에서 이미 sshd 프로세스에 의해 발생한 메시지의 대략적인 현황을 파악했지만 상사님한테 예쁜 보고서를 보여주지 않고, 말로 떠들어봐야 별로 인정해주지 않을 것이다. '그건 니 생각이고, 팩트를 내놔'란 피드백이나 받기 십상. (이정도 피드백만 해줘도 사실 최고의 상사님)
결국 프로세스별 메시지의 통계 및 발생 추이를 구하기 위해서는 주요 키워드만을 추출할 필요가 있는데, 엑셀의 필터링 기능을 이용해서 프로스세별로 구분된 메시지만을 조회할 수 있기 때문에 (노가다가 좀 필요해서 그렇지) 별로 어렵지 않다.
su 프로세스 선택 |
su 프로세스에 의해 발생한 메시지 현황 |
프로세스별 메시지 확인을 통해 선별한 키워드의 현황은 다음과 같다. (잡다한 건 뺐음)
프로세스별 메시지의 주요 키워드 |
이제 메시지 정보에서 확인된 키워드를 추출하는 작업이 필요한데, 이때 역시 VIM의 문자열 치환 기능이 큰 역할을 한다. 엑셀로 정리된 데이터에서 '나머지' 필드만을 복사한 후 선별 키워드를 추출하는 과정은 다음과 같다.
치환 명령어에서 '치환 전 영역'에 사용된 정규표현식이 좀 복잡해 보이지만 사실 별거 없다. 나열된 단어들을 OR 조건으로 검사하는 것뿐.
- \vpam_unix|pam_succeed|root login|failed login|invalid user|failed password|accepted password|accepted publickey|bad protocol|connection closed|received disconnect
정규표현식 구조 |
참고로 매직 모드(\v)를 사용하지 않을 경우 해당 정규표현식은 아래와 같이 '|(OR 연산자)' 기호를 전부 예외 처리해줘야 한다.
- pam_unix\|pam_succeed\|root login\|failed login\|invalid user\|failed password\|accepted password\|accepted publickey\|bad protocol\|connection closed\|received disconnect
공통되는 부분을 '()'로 묶으면 정규표현식이 약간은 더 간결해진다.
- \vpam_(unix|succeed)|(root|failed) login|invalid user|failed password|accepted (password|publickey)|bad protocol|connection closed|received disconnect
물론 매직 모드(\v)를 사용하지 않는다면 '()' 역시 전부 예외 처리해줘야 한다. (실제 해보면 깊은 빡침을 느끼게 됨)
- pam_\(unix\|succeed\)\|\(root\|failed\) login\|invalid user\|failed password\|accepted \(password\|publickey\)\|bad protocol\|connection closed\|received disconnect
텍스트 나누기 기능을 이용해서 '나머지' 필드의 데이터를 구분 기호 'ㅋ'으로 나눈 결과는 다음과 같다.
이제 엑셀의 피벗테이블 기능을 이용해서 프로세스별 메시지의 키워드 발생 현황 및 발생 추이를 확인해보자.
관련 글
댓글 없음:
댓글 쓰기