2011.05.16
 

TCPアプリケーションがアクティブかどうか確認する

Question

プログラムを使用して HTTP サーバーが起動しているかどうか確認するにはどうしたらよいでしょうか。FTP はどうでしょうか、それとも電子メール、Telnet は? PING で特定のポートを確認できますか。

Answer

PING コマンドは、あるマシンから別のマシンへの基本的な IP 接続のみテストします。非常に低レベルで動作するため、現在の TCP/IP ソフトウェアのほとんどで使用される TCP レイヤーは認識しません。特定のサーバーがオンラインかどうか確認するという話ならば、PING コマンドは適切とは言えません。

というより、この記事では単純な Check TCP Server (CHKSVR) ユーティリティーを提案します。CHKSVR は、同じコンピューター上またはリモート・コンピューター上であっても、好みの TCP ポートに素早く接続します。それを使用して、CL プログラムから、またはコマンド・ラインから対話式に、あるサーバーが応答しているかどうかをテストできます。

サーバーが動作しているか単純に確認する方法として CHKSVR を数年前に作成しました。(2005 年 3 月号の記事「How to Check If a Remote Telnet Server Is Active」記事 ID 20099 で発表しています)。ところが、確認は Telnet だけに限りません。SSL や SSH を使用するサーバーを含め、どのような TCP ベース・サーバーでも確認できるのです。正直、最近会議で、ある 1 人の出席者が私を呼び止め、私のユーティリティーについてとりとめもなく話を始めるまで、そのユーティリティーのことはすっかり忘れていました。彼の話では「おかげで命拾いした」ということで、これまで出会った中で最も使えたツールの 1 つだったとのことでした。褒めちぎっていました。

CHKSVR コマンドは 図 1 をご覧ください。

CHKSVR ユーティリティーは、あるポート番号に接続しようとしています。そのポート番号は、TCP プロトコルで通信している限り、どのサーバーでも動作できます。接続しているポート番号を変更することで、考えられる TCP サービスについて確認できます。

これを理解するカギは、すべての TCP/IP サービスが自分のポート番号上で動作しているということです。どのポートをどのサービスに割り当てるかを指定する規格はあります。一般的な規格をいくつか 図 2 に一覧しています。

SSH サーバーがローカル・マシンで実行しているかどうか確認する場合は、次のコマンドを実行します。

CHKSVR HOST('localhost') PORT(22) TIMEOUT(5)

サーバーが動作していない場合、CHKSVR により CPE3425 (A remote host refused an attempted connect operation「リモート・ホストが接続操作を拒否しました」) が送信されます。5 秒以内にホストから応答がないと、CPF9897 (Connection timed out!「接続がタイムアウトしました」) を受信します。

同様に、HTTP サーバーを確認する場合、次のようにポート番号を変更するだけです。

CHKSVR HOST('localhost') PORT(80) TIMEOUT(5)

リモート・ホストが応答しているかどうか確認するには、次のように異なるホスト名を指定するだけです。

CHKSVR HOST('www.google.com') PORT(80) TIMEOUT(30)

この技法は、プリンターがオンラインでネットワークに応答しているかどうか確認する場合に非常に役立ちます。

CHKSVR HOST('prt24.klements.com') PORT(9100) TIMEOUT(30)

全体を CL プログラムにパッケージとしてまとめ、ジョブ・スケジューラーに読み込むことができます。そのようにして、ダウンしているサーバーがあるかどうか通知するプログラムらしきものを自分で作成できます。

PGM
   CHKSVR HOST('smtp.example.com') PORT(25) TIMEOUT(10)
   MONMSG MSGID(CPE0000 CPF0000) EXEC(DO)
     SNDMSG MSG('The Exchange Server is down!') +
         TOUSR(KLEMSCOT)
   ENDDO
ENDPGM

全体が RPG で作成された万能型ツールです。きっと役に立つでしょう。systeminetwork.com/files/ChkSvr.zip で CHKSVR ユーティリティーをダウンロードできます。

ページトップ

ボタン