특정 디렉토리에 저장된 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에 넣어주어야 한다. 해당 내용은 다음 포스트에서 확인해보도록 한다.
'Python > Do Something' 카테고리의 다른 글
python - JSON 파일 가공하여 DB에 넣기넣기 (0) | 2023.01.16 |
---|---|
python - PC(Server ~ Client) 간 주기적인 파일 전송(Socket) (0) | 2023.01.16 |
python - PC(Server ~ Client)간 파일 전송 (Socket) (0) | 2023.01.16 |
python - ping test 후 결과를 txt 파일로 저장하고, mysql DB에 저장하기 (ping3, pymysql) (0) | 2023.01.16 |
python - mysql DB 생성, txt 파일을 DB Table에 넣기 (pymysql) (0) | 2023.01.16 |