1

Web サーバーがローカル ネットワーク内のどこかで稼働しているかどうかを検出して特定するスクリプトを作成したいと考えています。私のアイデアはこれでした(最速のものではありません)。ローカル ネットワークに接続されているすべての IP を確認し、Web サーバーがリッスンしているポートに接続してみます (常に 8000 でリッスンするとします)。見つかった場合は停止して、IP を返します。それが基本的な考え方です。コードを書きましたが、まだ完全にはテストしていません。現在、私の環境には PC が 1 台しかないためです :)...しかし、PC で Web サーバーを実行したところ、ID が見つかりました。:)

コードはそのように見えます

local_host_ip = socket.gethostbyname(socket.gethostname())
web_client_socket = socket.socket()
try:

    if web_client_socket.connect_ex((local_host_ip,8000)) == 0:
        print 'Found rhombus server'
        web_client_socket.close()
        return local_host_ip
except IOError:
    pass

for ip in [ip_address for ip_address in socket.gethostbyname_ex(socket.gethostname())[2] if 
           ip_address != local_host_ip]:
    print 'Attempting to find server'
    try:

        if web_client_socket.connect_ex((local_host_ip,8000)) == 0:
            print 'Found rhombus server'
            return ip
    except IOError:
        pass
return 'Rhombus server not found'

同様のコードを試しましたが、Webサーバーがポート8000​​でリッスンしているかどうかを確認しました(私のアイデアが機能しているかどうかを確認するため)。最初に知りたいのは、より迅速でより良い方法があるかどうかです.2番目に、ウェブサーバーの名前を取得できますか? このコードが機能したとしても、2 つの Web サーバー (それぞれ異なるマシン) が 8000 で実行されている場合はどうなるでしょうか?

4

1 に答える 1