web-dev-qa-db-ja.com

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

次のことができるサーバーを実行する必要があります。

  1. 休憩してください。呼び出しが行われるとスクリプトがトリガーされます
  2. スクリプトは、データベースが実行されているかどうかを確認します。
  3. 実行中の場合は、Successとしてクライアントに返信します。それ以外の場合は、失敗として返信します。

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

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

3
Jatin

私が想像できるもっと些細なサービスの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には、利用可能なオプションのかなり良い説明があります。

5
HBruijn

私はいくつかの簡単なncコマンドの助けを借りてBASHでそれを行います:

#!/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を使用してクライアントを設定する必要もあります。成功の応答を受信するには、クライアントでnclistenコマンドを設定する必要があるかもしれません。

このスクリプトは完全にはほど遠いので、そのためのクライアントも作成する必要がありますが、いくつかのアイデアが得られる可能性があります。

ここでの基本的なことは、ncの使用です。それの助けを借りて、あなたは簡単なクライアントサーバーアーキテクチャをセットアップすることができます。

3
psimon

同様の解決策を探しているときに私はこれに遭遇しました: Goexpose

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

1
sinaiy