
以下のことができるサーバーを実行する必要があります:
- 休憩の電話を取る。電話がかかってくるとスクリプトが起動します
- スクリプトはデータベースが実行中かどうかを確認します。
- 実行中の場合はクライアントに応答し、そうで
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 呼び出しに基づいて、シェルを含む多数のタスクをトリガーできます。