2016-11-22 5 views
1

내 서버를 사용할 수있는 경우에만 작동하는 python 스크립트가 있습니다. 스크립트가 시작되기 전에 서버를 핑 (ping)하거나 서버 가용성을 확인하고 싶습니다.루트 권한이없는 Python 서버 ping

이미 관련되는 몇 가지 질문이 있습니다. 예컨대

  1. pyping module

    response = pyping.ping('Your IP') 
    if response.ret_code == 0: 
        print("reachable") 
    else: 
        print("unreachable") 
    
  2. ping process in python

    response = os.system("ping -c 1 " + hostname) 
    

이 대답은하지만 루트 사용자로, 잘 작동합니다! 나는 다음과 같은 오류 메시지가 일반 사용자로이 솔루션을 사용하는 경우 :

ping: Lacking privilege for raw socket. 

나는 내가이 젠킨스 작업에서이 스크립트를 실행하고 있기 때문에 일반 사용자로,이 것을 할 수있는, 솔루션이 필요 루트로 실행할 수있는 옵션이 아닙니다.

+0

핑이되어야합니까? HTTP GET 또는 간단한 UDP 패킷은 어떻습니까? –

+0

흠, 나는 그것에 대해 생각하지 않았다. 내 마음에 오는 첫 번째 일은 핑 (ping) 이었으므로 핑 (ping)으로 해결하려고합니다. 그리고 그것은 짧고 간단합니다. 하지만 다른 해결책이 있다면 아래 답변으로 적어주십시오. – Oni1

+3

예약 상황을 확인하는 이유는 무엇입니까? 알려진 포트에서 실행중인 일부 서비스를 사용하기 전에 빠른 확인을 시도하고 있습니까? 그렇다면 먼저 ping을 시도한 다음 "실제"서비스에 연결하는 대신 서비스에 연결하려고합니다. –

답변

2

HTTP HEAD 요청을 수행하려고 할 때 시스템에 http 서버가 실행 중이라고 가정하면 충분합니까?

from http.client import HTTPConnection # python3 

try: 
    conn = HTTPConnection(host, port, timeout) 
    conn.request("HEAD", "/") 
    conn.close() 

    # server must be up 
except: 
    # server is not up, do other stuff