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"))