Telnetテストポート接続性

1916 ワード

telnetを使用してポートの接続性を優雅にテストする方法


 
telnetコマンドはTELNETプロトコルのユーザーインタフェースで、コマンドモードとセッションモードの2つのモードをサポートします.telnetでは多くのコマンドがサポートされていますが、ほとんどの場合、ターゲットホストがポートを開いているかどうかを確認するために使用します(デフォルトは23).
実行結果は2つあります.
ポートが開いていません
$ telnet 101.199.97.65 62715
Trying 101.199.97.65...
telnet: connect to address 101.199.97.65: Connection refused

コマンドが終了しました.
ポートが開いています
$ telnet 101.199.97.65 62715
Trying 101.199.97.65...
Connected to 101.199.97.65.
Escape character is '^]'.

コマンドは終了しません.ヒントに従ってEscape character is'^]'.終了文字は'^]'(CTRL+])であることがわかります.この場合、他の文字を入力して終了させることはできません.CTRL+Cはできません.CTRL+]を入力すると自動的に実行され、コマンドモードに入ります.
^]
telnet>

quitを再実行してから本当に終了します.
telnet> quit
Connection closed.

ここで、Escape characterはパラメータ-eを使用してカスタマイズできます.
$ telnet -e p 101.199.97.65 62715   # p 
Telnet escape character is 'p'.
Trying 101.199.97.65...
Connected to 101.199.97.65.
Escape character is 'p'.
p
telnet> quit
Connection closed.

それでもtelnetを終了するのは面倒です.では、さらに、スクリプトに現れたらtelnetをどのように(優雅に)脱退すればいいのでしょうか.
イニシアチブ
実際には、
結果を出力した直後に終了
$ echo "" | telnet 101.199.97.65 62715

Trying 101.199.97.65...
Connected to 101.199.97.65.
Escape character is '^]'.
Connection closed by foreign host.  # 
$ echo "" | telnet 101.199.97.65 62715
Trying 101.199.97.65...
telnet: connect to address 101.199.97.65: Connection refused # 

出力結果後遅延終了
sleep 2はtelnetに結果を出力させた後、2秒滞在した後にコマンドモードを終了させる.
$ sleep 2 | telnet 101.199.97.65 62715

Trying 101.199.97.65...
Connected to 101.199.97.65.
Escape character is '^]'.
Connection closed by foreign host.

この方法では、標準出力と標準エラーをファイルにリダイレクトし、ファイルの内容を分析することでポートのオープン状態を判断できます.