Python ピング

Muhammad Waiz Khan 2023年1月30日
  1. subprocess.call() メソッドを使って Python でサーバをピングする
  2. Python でサーバをピングするには os.system() メソッドを使用する
  3. Python で ping3.ping() 関数を使用したサーバをピングする
Python ピング

このチュートリアルでは、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() 関数を使用したサーバをピングする

モジュールの ping3ping(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"))

関連記事 - Python Network