Python/Do Something

python - ping test 후 결과를 txt 파일로 저장하기

pybi 2023. 1. 16. 22:46

특정 디렉토리에 저장된 txt 파일을 읽어온 후 해당 정보에 대해 Ping test를 진행한 후 이를 다시 다른 txt 파일로 저장하고자 한다.

우선, 메모장으로 ping test를 하고자 하는 txt 파일을 생성한다.

 

txt 파일은 ','로 구분하고, '<' 나 '[' 로 시작하는 라인은 읽지 않도록 할 예정이다. (단순히 장비 구분자로만 사용)

 

C:\pymin\pingtest

< PGW >
server,server1,192.168.35.1,seoul,description1
server,server2,192.168.35.1,seoul,description2
server,server3,192.168.35.1,seoul,description3
server,server4,192.168.35.1,seoul,description4
< AWS >
#server,AWS_server5,192.168.35.1,seoul,description5
#server,AWS_server6,192.168.35.1,seoul,description6
[END]

 

다음으로 pip install을 통해 ping3등 필요 모듈을 다운로드 해야한다. (pip install 방법은 추후 정리)

 

ping test가 정상이면 결과는 0
pint test가 비정상이면 결과는 -1
ping test 등록은 해두었지만 감시를 하지 않을 거면 앞에 #을 붙여두고 결과는 -2로 출력되록 설정해 두었으며, 이제 한줄 한줄 내용을 확인해보자

import time
import sys
from datetime import datetime
from ping3 import ping,verbose_ping

while True:
with open('C:/pymin/pingtest/ping1.txt', 'r') as f: #저장한 txt 파일 읽기
for line in f.readlines():
site = line.split(',') #txt파일을 ','로 구분하기
sys.stdout = open('ping_result.txt','a') #ping test 결과를 해당 파일명으로 저장
if site[0][0] == '#': #ping test를 위해 등록했지만 해당 장비는 ping test 결과를 -2로 등록(추후 -2는 마스킹 예정)
print(str(datetime.now())[:19] + ',' + site[0][1:] + ',' + site[1] + ',' + site[2] + ',' + site[3] + ',-2,' + site[4][:-1])
elif site[0][0] == '<': #ping test를 위한 txt 파일을 구분하기 위해 설정
pass
elif site[0][0] == '[': #ping test를 위한 txt 파일을 구분하기 위해 설정
pass
else:
result = ping(site[2])
if result == None:
print(str(datetime.now())[:19] + ',' + site[0] + ',' + site[1] + ',' + site[2]+ ',' + site[3] + ',-1,' + site[4][:-1])
else:
print(str(datetime.now())[:19] + ',' + site[0] +',' + site[1] + ',' + site[2] + ',' + site[3] + ',0,' + site[4][:-1])
f.close()
break
 
 

이제 수행을 하면 아래와 같이 스크립트가 수행되고

PS C:\pymin> & C:/Users/Min/AppData/Local/Programs/Python/Python38/python.exe c:/pymin/ping1_r1.0_210311.py

 

파이썬이 설치된 디렉토리로 가면 ping test 결과가 txt파일 형태로 수록된다.

[date_time,system_group,system_name,system_ip,location,result,description]
2021-03-19 00:31:58,server,server1,192.168.35.1,seoul,0,description1
2021-03-19 00:31:58,server,server2,192.168.35.1,seoul,0,description2
2021-03-19 00:31:58,server,server3,192.168.35.1,seoul,0,description3
2021-03-19 00:31:58,server,server4,192.168.35.1,seoul,0,description4
2021-03-19 00:31:58,server,AWS_server5,192.168.35.1,seoul,-2,description5
2021-03-19 00:31:58,server,AWS_server6,192.168.35.1,seoul,-2,description6

처음 4개는 ping test가 정상적으로 수행되어 결과가 0으로 출력

다음 2개는 앞에서 #표시를 붙여두었기 때문에 결과가 -2로 출력

만약 ping test 응답이 없을 경우는 -1로 출력되었을 것이다.

 

 

이제 이렇게 저장된 결과를 mysql과 같은 DB에 넣어두고 ping test 응답이 없는 경우 DB와 연동된 시스템에서 알람 등을 발생하도록 설정할 예정이다.

 

그렇게 하기 위해서는 주기적으로 해당 스크립트를 수행시켜야 하고, 수행 결과를 지속적으로 mysql에 넣어주어야 한다. 해당 내용은 다음 포스트에서 확인해보도록 한다.