본문 바로가기
Programming/Python

[Python] linux grep값 변수로 담기

by 알 수 없는 사용자 2022. 11. 14.

외부든 외부든 어떠한 통신 값이나 임의로 설정한 데이터 값이 있으면 log가 남기 마련이다.

그리고 개발과 운영을 하는 IT 직군이라면 log를 통해서 문제점을 발견하거나 필요한 데이터를 뽑아내어 사용하기도 한다.

 

물론 나도 그러한 업무에 해당한다.

 

log에는 수많은 문자열과 숫자 데이터가 빼곡히 나열되어 있다.

그리고 대부분의 log에는 그럴싸한 패턴이 존재한다. 그렇지도 않은 경우도 있지만 패턴이 있다.

그 패턴을 발견하고 분석해서 나에게 필요한 자료를 한눈에 볼 수 있다면 편하지 않을까?

 

현재 본인은 python을 주로 사용하여 프로젝트를 진행하고 있고 server운영도 함께 하고 있다.

그렇다면 python을 활용하여 linux server에 실시간으로 떨어지는 log값을 grep 명령어를 사용하여

python 변수로 값을 받고 형변환 후 계속해서 안정적인 결과값을 출력해 보자

 

 

가정)

1. 출력하고자 하는 log파일 경로
     /web/nlab/logs/web.log
2. log의 패턴 분석
     log라는 단어 아래 1101이 성공이라는 패턴이고 1102가 실패라는 패턴일 경우
     log라는 단어 아래 성공만 개수로 뽑아내고 싶을 때

3. python 파일 경로
    /python/script/test.py


test1=subprocess.check_output("cat /web/nlab/logs/web.log | grep -A1 -e 'log'| grep '1101' |wc -1", shell=True)

test2 = int(test1)

print(test2)

위의 web.log 파일 안에 1101이라는 log 결과가 100개가 있으면

 

test1 변수 안에는 str형으로 "100"이 변수에 담긴다.

숫자형으로 변수를 받고 싶으면 본인이 편한 대로 각자 스타일에 맞게 형 변환해준다.

그래서 test2에 숫자형으로 형 변환시켜 test2의 변수에는 숫자 100이 담기게 된다.

 

grep라는 명령어를 python코드로 실행시켰다.

짧은 코드지만 나에게 필요한 값을 뽑아낼 수 있다면. 위의 코드를 하드 코딩하여 강력한 모니터링 시스템을 구축할 수 있을 것이다.

댓글