집 인터넷이 좋은 편은 아니라 정말 정말 가끔씩 핑이 튈 때가 있다.
게임을 하기 불편할 정도로 튀는데, 네트워크 감시 장비처럼 소리가 났으면 좋겠다는 생각을
가지게 되었다가 만들게 되었다.
ini 파일을 처음 사용한 파일이다.
맥 터미널에 say라는 재밌는 명령어가 있어서 사용하게 되었다.
beep.py
import subprocess
from sys import exit
from time import sleep
from configparser import ConfigParser
try:
ini = ConfigParser()
ini.read(".setting.ini")
ip = ini['Settings']['ip']
ms_criteria = float(ini['Settings']['ms_criteria'])
cycle_criteria = float(ini['Settings']['cycle_criteria'])
sound_toggle = (ini['Settings']['sound'] == "true")
message = ini['Settings']['message']
command = ["ping", ip, "-c", "1"]
except Exception:
print("[!] cannot find \'.setting.ini\'")
print(" download: \'.setting.ini\'")
print(" from: github.com/terria1020/ping-checker-OS-X-")
exit()
def beep(level):
comment = f"{level} ping!"
if sound_toggle:
subprocess.call(["say", message])
print(comment)
def get_mil_sec(out):
s_out = out.split("time=")
need = s_out[1].split("ms")
return float(need[0])
return s_out
def request():
ping = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = ping.communicate()
ping.terminate()
return out.decode()
def main():
try:
while (True):
output = request()
if (output.find("time=") < 0):
beep("dead")
else:
ms = get_mil_sec(output)
if ms > ms_criteria:
beep(f"[{ms} ms] high")
else:
print(f"ping: {ms} ms")
sleep(cycle_criteria)
except KeyboardInterrupt:
print("\nKeyboard 인터럽트를 통한 프로그램 종료입니다.")
if __name__ == '__main__':
main()
setting.ini
[Settings]
;ip for ping
ip : 192.168.0.1
;criteria is float
ms_criteria : 50.0
cycle_criteria : 0.5
;sound : true | false
sound : true
message : "ping에 문제가 있습니다!"
ini 파일을 통해 핑 주기와 소리 설정을 할 수 있다.
깃허브에 올렸다가 레포지토리 정리 겸 올린다.
'잡다한것' 카테고리의 다른 글
m1 맥북 롤 보이스 설정 활성화 (0) | 2021.03.25 |
---|---|
개발자 맞춤 키보드 커스텀 세팅 (0) | 2020.11.30 |
블로그 이전 끝입니다. (0) | 2020.07.02 |