PythonwでPing処理(Google Colaboratory)

AIの知識&PythonGoogle Colaboratory,ping

Python3でraw socketを利用してping処理を実行します。
 
※動作確認はGoogle Colaboratoryを利用しています。
Google Colaboratoryの簡単な使い方はこちらより
 

pingとは

pingとは、自分以外のコンピュータの疎通を確認と、応答状態、応答速度を確認するために使用されるコマンドです。
 

利用モジュール

ping3
 
Ping3 is a pure python3 version of ICMP ping implementation using raw socket.
(Note that on some platforms, ICMP messages can only be sent from processes running as root.)
 
Ping3は純粋なPython3版のICMP ping実装で、raw socket を使用します。
(プラットフォームによっては、ICMPメッセージはrootとして動作しているプロセスからしか送信できないことに注意してください)。
 

ping3のインストール方法

#ping3のインストール

pip install ping3

Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/

Collecting ping3

Downloading ping3-4.0.3-py3-none-any.whl (13 kB)

Installing collected packages: ping3

Successfully installed ping3-4.0.3

***

Pingの機能

# 遅延時間を秒単位で返します。

from ping3 import ping, verbose_ping

ping('yahoo.com’)

0.04111957550048828

***

# ホスト不明の場合(解決できない場合)、Falseを返します。

from ping3 import ping, verbose_ping

ping('not.exist.com’)

False

***

# タイムアウトした場合(応答がない場合)は、Noneを返します。

from ping3 import ping, verbose_ping

ans = ping(“224.0.0.0")

print(ans)

None

***

# タイムアウトを10秒に設定します。デフォルトのタイムアウトは4秒です。

from ping3 import ping, verbose_ping

ping('yahoo.com’, timeout=10)

0.07707810401916504

***

# 遅延時間をミリ秒単位で返します。デフォルトの単位は秒で表します。

from ping3 import ping, verbose_ping

ping('yahoo.com’, unit=’ms’)v

41.79525375366211

***

# 複数のインタフェースの送信元 IP アドレスを設定します。デフォルトのsrc_addrはバインドしない場合はNoneです。

from ping3 import ping, verbose_ping

ping('example.com’, src_addr=’192.168.1.15′)

0.215697261510079666

***

# LINUXのみ。複数のネットワークインターフェイスのソースインターフェイスを設定します。デフォルトのインターフェースは、バインディングなしのNoneです。

from ping3 import ping, verbose_ping

ping('yahoo.com’, interface=’eth0′)

0.07749342918395996

***

# パケットのTime-To-Liveを5に設定します。5回ジャンプしてもターゲットホストに到達しない場合, パケットは廃棄される. デフォルトのttlは64です。

from ping3 import ping, verbose_ping

ping('yahoooo.com’, ttl=5)v

False

***

# ICMPパケットのペイロードを56バイトに設定する.ICMPパケットの総サイズは, 8 (ヘッダ) + 56 (ペイロード) = 64バイトとなります. デフォルトは56です。

from ping3 import ping, verbose_ping

ping('yahoo.com’, size=56)

0.07742500305175781

***

# Pingを4回連続で打ちます。

from ping3 import ping, verbose_ping

verbose_ping('yahoo.com’)

ping 'yahoo.com’ … 59ms

ping 'yahoo.com’ … 59ms

ping 'yahoo.com’ … 59ms

ping 'yahoo.com’ … 59ms

***

# タイムアウトを10秒に設定します。デフォルトのタイムアウトは4で4秒です。

from ping3 import ping, verbose_ping

verbose_ping('yahoo.com’, timeout=10)

ping 'yahoo.com’ … 59ms

ping 'yahoo.com’ … 59ms

ping 'yahoo.com’ … 59ms

ping 'yahoo.com’ … 59ms

***

# 6回Pingを打ちます。デフォルトは4回です。

from ping3 import ping, verbose_ping

verbose_ping('yahoo.com’, count=6)

ping 'yahoo.com’ … 77ms

ping 'yahoo.com’ … 41ms

ping 'yahoo.com’ … 41ms

ping 'yahoo.com’ … 40ms

ping 'yahoo.com’ … 42ms

ping 'yahoo.com’ … 41ms

***

# Pingを延々と打ち続けます。(0は無限ループを意味する) "ctrl + c"で停止します。

from ping3 import ping, verbose_ping

verbose_ping('yahoo.com’, count=0)

ping 'yahoo.com’ … 60ms

ping 'yahoo.com’ … 59ms

ping 'yahoo.com’ … 59ms

ping 'yahoo.com’ … 59ms

※但し、Google Colaboratoryは"ctrl + c"ではなく、"ctrl + m + i"で実行を中断できます。

***

# 複数のインタフェースの送信元 IP アドレスから Ping を実行します。デフォルトの src_addr は None です。

from ping3 import ping, verbose_ping

verbose_ping('example.com’, src_addr=’192.168.1.15′)

ping 'example.com’ from '192.168.1.15’ … 215ms

ping 'example.com’ from '192.168.1.15’ … 216ms

ping 'example.com’ from '192.168.1.15’ … 219ms

ping 'example.com’ from '192.168.1.15’ … 217ms

***

# LINUXのみ。ネットワークインターフェイス 'wifi0’ から Ping を実行します。デフォルトのインターフェースはNoneです。

from ping3 import ping, verbose_ping

verbose_ping('example.com’, interface=’wifi0′)

ping 'example.com’ from '192.168.1.15’ … 215ms

ping 'example.com’ from '192.168.1.15’ … 216ms

ping 'example.com’ from '192.168.1.15’ … 219ms

ping 'example.com’ from '192.168.1.15’ … 217ms

***

# 遅延時間を秒単位で表示します。デフォルトの単位はミリ秒の “ms “です。

from ping3 import ping, verbose_ping

verbose_ping('yahoo.com’, unit=’s’)

ping 'yahoo.com’ … 0s

ping 'yahoo.com’ … 0s

ping 'yahoo.com’ … 0s

ping 'yahoo.com’ … 0s

***

# TTL を 5 に設定します。デフォルトは64です。

from ping3 import ping, verbose_ping

verbose_ping('yahoo.com’, ttl=5)

ping 'yahoo.com’ … Error

ping 'yahoo.com’ … Error

ping 'yahoo.com’ … Error

ping 'yahoo.com’ … Error

***

# 各パケット間で 5 秒間待機する。デフォルトは0です。

from ping3 import ping, verbose_ping

verbose_ping('yahoo.com’, interval=5)

ping 'yahoo.com’ … 75ms

ping 'yahoo.com’ … 57ms

ping 'yahoo.com’ … 59ms

ping 'yahoo.com’ … 56ms

***

# ICMPペイロードを56バイトに設定します。デフォルトは56です。

from ping3 import ping, verbose_ping

verbose_ping('yahoo.com’, size=56)

ping 'yahoo.com’ … 79ms

ping 'yahoo.com’ … 59ms

ping 'yahoo.com’ … 56ms

ping 'yahoo.com’ … 56ms

***

PythonwでPing処理(Google Colaboratory)のまとめ

一番最初に使ったネットワークのコマンドがPingでした。
昔、サーバーの管理をしているときにサイトが生きているか確認の為、windowsでPingコマンドを多用していた記憶があります。
 
Pythonでも簡単にPingが打てるのが確認できました。