2016-11-22 4 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) 
    

これらの答えだけrootユーザーとして、よく働きます! 私は、次のエラーメッセージが表示されます、一般的なユーザーとして、このソリューションを使用する場合:

ping: Lacking privilege for raw socket. 

私はジェンキンスジョブでこのスクリプトを実行しているため、一般的なユーザーとして、持っていることを行うことができ、ソリューションを必要としますルートとして実行するオプションではありません。

+0

pingする必要がありますか? 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 
関連する問題