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

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

以下のことができるサーバーを実行する必要があります:

  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

これには、クライアントの設定も必要になります。おそらく、 Success 応答を受信するには、クライアントで listen コマンドncを設定することも必要になります。nc

このスクリプトは完成には程遠く、クライアントも作成する必要がありますが、いくつかのアイデアが得られるかもしれません。

ここでの基本は の使用ですnc。これを使用すると、シンプルなクライアント サーバー アーキテクチャをセットアップできます。

答え3

同様の解決策を探しているときにこれに遭遇しました:ゴーエクスポーズ

HTTP 呼び出しに基づいて、シェルを含む多数のタスクをトリガーできます。

関連情報