Python ピング
- 
          
            subprocess.call()メソッドを使って Python でサーバをピングする
- 
          
            Python でサーバをピングするには os.system()メソッドを使用する
- 
          
            Python で ping3.ping()関数を使用したサーバをピングする
 
このチュートリアルでは、Python で ICMP(Internet Control Message Protocol)を使ってサーバーにピングする様々な方法を説明します。Ping は、インターネットプロトコル上で特定のサーバーが利用可能かどうかを確認するために使用されます。メッセージが宛先(サーバ)に届くまでの時間と、サーバのレスポンスがソースに届くまでの時間を計測します。
subprocess.call() メソッドを使って Python でサーバをピングする
    
subprocess.call(command) メソッドは command を入力として受け取り、それを実行します。コマンドが正常に実行された場合は 0 を返します。
サーバに ping するコマンドは、Unix なら ping -c 1 host_address、Windows なら ping -n 1 host_address となり、1 はパケット数、host_address はピングしたいサーバのアドレスです。
まず platform.system() メソッドを使ってマシンの OS を調べ、それに応じてコマンドを実行することができます。以下の例では、subprocess.call() メソッドを用いて Python でサーバに ping するコマンドを実行する方法を示します。
import platform
import subprocess
def myping(host):
    parameter = "-n" if platform.system().lower() == "windows" else "-c"
    command = ["ping", parameter, "1", host]
    response = subprocess.call(command)
    if response == 0:
        return True
    else:
        return False
print(myping("www.google.com"))
Python でサーバをピングするには os.system() メソッドを使用する
os.system(command) メソッドは command (文字列) を入力として受け取り、それをサブシェルで実行します。このメソッドは、コマンドがエラーなく実行された場合に 0 を返します。
以下のように os.system() メソッドを用いて ping サーバのコマンドを実行することができます。
import os
def myping(host):
    response = os.system("ping -c 1 " + host)
    if response == 0:
        return True
    else:
        return False
print(myping("www.google.com"))
Python で ping3.ping() 関数を使用したサーバをピングする
モジュールの ping3 の ping(addr) 関数はサーバのアドレスを入力として受け取り、サーバが利用可能な場合は ping 時間を、利用不可能な場合は False を返します。
root の権限で ping3 モジュールをインストールすることができます。
pip install ping3
サーバのアドレスを ping() メソッドに渡すことで、サーバに ping をかけることができます。
from ping3 import ping
def myping(host):
    resp = ping(host)
    if resp == False:
        return False
    else:
        return True
print(myping("www.google.com"))