スクリプトを実行して応答するシンプルなサーバー

スクリプトを実行して応答するシンプルなサーバー

以下を実行するサーバーが必要です。

  1. ブレーキコールに答えてください。呼び出されると、スクリプトがトリガーされます。
  2. このスクリプトは、データベースが実行されていることを確認します。
  3. クライアントが実行されている場合は応答し、そうでなければSuccess応答は失敗します。

私はApacheや他の主要なWebサーバーを使用したくありません。ポートで実行される単純なスクリプトも機能します。わかりました。python -m SimpleHTTPServerしかし、ファイルアクセスのみを提供していると思います。

ポート上で実行され応答する単純なJavaプログラムを書くことができますが、いくつかの簡単な解決策を探しています。

答え1

私が考えることができる最もマイナーなサービスの1つは、xinetdでサービスを実行することです。これの利点は、xinetd自体が比較的軽量ですが、要求の制限、TCPラッパーなどのロギングやセキュリティの制限など、すべてのネットワーク関連タスクを処理することです。

xinetdをインストールし(まだインストールされていない場合)、カスタムサービスを定義します。例 /etc/xinetd.d/helloworld:

service helloworld
{
    disable         = no
    port            = 1234
    socket_type     = stream
    protocol        = tcp
    wait            = no
    user            = nobody
    server          = /usr/local/bin/hello-world.sh
    server_args     = test
    instances       = 1
    type            = unlisted
}

xinetdを再ロード/再起動するには、を使用できますtelnet localhost 1234

マニュアルページには、man xinetd.conf利用可能なオプションの良い説明があります。

答え2

いくつかの簡単なコマンドを使用してBASHでncこれを行います。

#!/bin/bash

nc -k -l -p PORT > tempfile

while true
do
    if cat tempfile | grep request;
    then
        # Execute checker script
        # Reply back with nc
        : > tempfile # Clear tempfile
    fi
    sleep 1
done

ncこれにはクライアント設定も必要です。nc成功した応答を受信するには、クライアントでリスニングコマンドを設定する必要があります。

スクリプトはまだ完成していないため、クライアントを作成する必要がありますが、いくつかのアイデアを得ることができます。

ここで最も基本的なことは、を使用してnc単純なクライアント - サーバーアーキテクチャを構築できることです。

答え3

同様の解決策を探している間にこの問題が見つかりました。露出する

シェルを含むHTTP呼び出しに基づいて多くの操作をトリガーできます。

関連情報