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