Appia의 IT세상

Python[파이썬] Ping(ICMP) 확인 하는 방법/확인하는 프로그램 만들기 본문

Python/Python 응용

Python[파이썬] Ping(ICMP) 확인 하는 방법/확인하는 프로그램 만들기

Appia 2020. 7. 18. 07:43
반응형

Python[파이썬] Ping(ICMP) 확인 하는 방법/ 확인하는 프로그램 만들기

 

이번 포스팅에서는 ICMP 패킷을 보내는 흔히 우리 사이에서 이야기 하는 ping을 날리는 프로그램을 한번 작성해보도록 하겠습니다. 일단, 쉽게 기존에 윈도우 내부에서의 명령어를 그대로 사용할 예정입니다. 따라서, 시작시에 반드시 os 모듈에 대해서 import를 해줘야 합니다. 그럼 먼저 간단한 ping을 확인하기 위한 코드를 작성해보겠습니다. 

 

import os
 
hostname = "google.com"
 
response = os.system("ping -n 1 " + hostname)
 
if response == 0:
 
    Netstatus = "Network Active"
    
else:
 
    Netstatus = "Network Error"
cs

일단 위와 같이 작성을 하면, 윈도우에서 ping 명령어를 날리는 것과 동일한 효과를 얻습니다. 파이썬 콘솔창에는 다음과 같은 결과가 나옵니다. (물론, 한글 미지원일 경우 이 부분이 깨져서 나오는 경우가 많습니다. 그럼에도 흔히 쉽게 어떤 부분인지 이해가 가능할 것으로 보입니다. 참고하시길 바랍니다.) 

Ping www.google.com [216.58.220.132] 32바이트 데이터 사용:

216.58.220.132의 응답: 바이트=32 시간=32ms TTL=53

 

216.58.220.132에 대한 Ping 통계:

    패킷: 보냄 = 1, 받음 = 1, 손실 = 0 (0% 손실),

왕복 시간(밀리초):

    최소 = 32ms, 최대 = 32ms, 평균 = 32ms

0

 

그럼 위의 부분을 활용하여 조금 더 발전되게 코드를 작성하고, 이를 GUI에 연결해서 사용해보도록 하겠습니다. 먼저 위의 부분을 바탕으로 함수처리를 하겠습니다. 

import os
 
 
def check_sits(hostName):
 
    response = os.system("ping -n 1 " + hostName)
    
    if response == 0:
    
        Netstatus = "Network Active"
        
    else:
    
        Netstatus = "Network Error"
 
    return Netstatus
 
 
if __name__ == "__main__":
 
    ret=check_sits('8.8.8.8')
    
    print(ret)
cs

위의 코드를 함수처리 된 부분을 바탕으로 GUI에 적용해보도록 하겠습니다. 이 부분은 PyQt5를 사용하겠습니다. 

 

import sys
 
import os
 
from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit, QPushButton, QLineEdit
 
 
class QtGUI(QWidget):
 
    def __init__(self):
 
        super().__init__()
 
        self.setWindowTitle("Appia Qt GUI")
 
        self.resize(300300)
 
        self.labelobj1 = QTextEdit(self)
 
        self.labelobj1.move(2020)
 
        self.lineedit1 = QLineEdit(self)
 
        self.lineedit1.move(20270)
 
        self.button = QPushButton("Check", self)
 
        self.button.move(200270)
 
        self.button.released.connect(self.print_label)
 
        self.show()
 
    def print_label(self):
 
        self.labelobj1.setText(self.check_site(self.lineedit1.text()))
 
    def check_site(self, url):
 
        fresult = os.system("ping -n 1 " + url)
 
        if fresult== 0:
 
            return "Correct Site : " + url +"\nPing OK"
        else:
 
            return "problem Site: " + url+"\nPing Not OK"
 
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
 
    ex = QtGUI()
 
    app.exec_()
cs

 

위의 코드를 실행하면 다음과 같은 화면이 나타납니다. 

위에서는 google.com을 컨맨드 해서 ping이 가는지 확인한 결과입니다. 만약 문제가 있는 사이트을 경우에는 다음과 같이 나타나게 되어 있습니다. 

 

 

오늘은 Python[파이썬] Ping(ICMP) 확인 하는 방법/확인하는 프로그램 만들기라는 주제로 간단히 코딩을 하고, 관련된 부분에 대해서 포스팅을 해봤습니다. 물론, 앞서서 포스팅한 내용과 새롭게 한 부분을 혼합하여 다음과 같이 작성해봤습니다.

Python[파이썬] PyQt5, requests를 이용한 GUI기반의 웹사이트 확인기

위의 부분에 GUI에서 이벤트 처리만 변경하여 사용했습니다. 혹시 궁금하신점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다. 

반응형
Comments