コマンドラインから相手サーバーの特定のポートが空いているかどうか、調べたい時があります。
ポートの空きをチェックする方法を調べてみました。
pingではポートの空きはチェックできない
ping にはTCP/IPのポート番号がありません。
pingはICMPプロトコルを使用し、宛先との疎通をL3レベルで確認するためのツールです。
pingで使うICMPは、ポートの概念を持つTCP/UDPと同じL3レベルのプロトコルです。
よって、ICMPパケットはTCP/UDPヘッダを持たないため、ポート番号の概念はありません。
telnetがあればポートの空きを調べられる
$ telnet (相手のホスト) ポート番号
のように実行して相手からの反応があれば、ポートが空いていることが分かります。
Pythonを使う
Python を使う方法があります。
1 2 3 4 5 |
$ portping() { python <<<"import socket; socket.setdefaulttimeout(1); socket.socket().connect(('$1', $2))" 2> /dev/null && echo OPEN || echo CLOSED; } $ portping 8.8.8.8 54 CLOSED $ portping 8.8.8.8 53 OPEN |
・https://superuser.com/questions/769541/is-it-possible-to-ping-an-addressport
これは、分かりやすいです。
コメント
[…] […]
[…] […]