本サイトは広告・プロモーションが含まれています
Python

【subprocess】PingコマンドをPythonで実行

この記事はこんな人におすすめ

pingできるPythonコードを探している方

pingを実行するコード


とりあえずコードを知りたい方向けにコードをまず紹介します。

import subprocess

# ホストを指定します(pingを送信したい対象のIPアドレスまたはホスト名)
host = "127.0.0.1"

# pingコマンドを実行します
try:
    result = subprocess.run(["ping", "-c", "4", host], stdout=subprocess.PIPE, text=True, check=True)
    print(result.stdout)
    print(f"{host}へのpingが通りました")
except subprocess.CalledProcessError as e:
    print(f"pingコマンドがエラーを返しました: {e}")
except FileNotFoundError:
    print("pingコマンドが見つかりませんでした。")

subprocess.run()関数の引数を解説します。
この関数は、指定されたコマンドを実行し、その実行結果に関する情報を返します。

以下は、subprocess.run()関数に渡される引数の意味です:

  1. ["ping", "-c", "4", host]: 実行するコマンドとその引数を指定します。
    この例では、pingコマンドを実行し、-c 4オプションを指定して4回の送信を行います。host変数は、pingを送信したい対象のIPアドレスまたはホスト名を指定します。
  2. stdout=subprocess.PIPE: 標準出力(stdout)をキャプチャし、Pythonのプログラムから結果を取得できるようにします。
    subprocess.PIPEを指定することで、実行結果がバイト列として取得されます

  3. text=True: バイト列の代わりにテキスト(文字列)として標準出力を受け取りたい場合に使用します。この引数が指定された場合、stdoutからのデータは文字列として返されます。

  4. check=True: コマンドの実行がエラー(終了コードが非ゼロ)の場合に、subprocess.CalledProcessError例外を発生させます。これにより、コマンドの実行が成功したかどうかを確認できます。


このコードをmain.pyなどの名前で保存し、
コマンドプロンプトで python main.pyを実行して、pingが通れば

「127.0.0.1 へのpingが通りました」

とコマンドプロンプトで表示されます。

subprocessについて


subprocessは、Pythonの標準ライブラリの1つです。
Pythonスクリプトから呼び出される他のプログラムやコマンドを実行、制御するためのツールとして使われています。

subprocessモジュールを使用することで、Pythonスクリプトから外部プロセスを起動し、そのプロセスと対話したり、結果を取得したりすることができます。

例えば、全然今回の記事と関係ないんですがウェブブラウザ(Chrome)をPythonで立ち上げるみたいな
こともできます。

import subprocess

# Google Chromeの実行可能ファイルへのパスを指定します
chrome_path = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

# Google Chromeを起動します
try:
    subprocess.run([chrome_path])
except FileNotFoundError:
    print("Google Chromeが見つかりませんでした。")

上記の例からピンとくる方もいらっしゃると思うのですが

会社で使っているアプリやプログラムから値を取得したり、逆に起動させたりする時にもこのライブラリは使えます。

おわりに

ここまで読んでいただき、ありがとうございました。
9月に入り、夜は涼しくなってきてますね。

工場は田舎なので、夜の虫の音が心地いいです。
つまり最近はようやく快眠ということです。

8月は暑すぎて、バテバテでブログも更新できなかった。。。

昼は相変わらず暑いですが、皆様体調崩さず頑張っていきましょう!!

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA