web-dev-qa-db-ja.com

TCP接続を受信したら、コマンドを実行します

指定されたローカルの開いているポートへのリモート接続が正常に確立されたら、bashコマンドを実行したいと思います。 netcatsocat を調べましたが、どちらにも必要な機能があるかどうかはわかりません。通信の内容は気にせず、接続が確立されているだけです(接続は開始後すぐに切断できます)。

これは、要求された場合にのみ起動したいローカルリソース( Minecraft サーバー)があるためです。理論的には、クライアントは接続を試行する必要があり(もちろん、最初は失敗します)、サーバーが起動し、しばらくすると、クライアントは実行中のサーバーにもう一度接続できます。

3
sgbrown

ncには-Fオプションがあります。

-F sendmsg(2)を使用して最初に接続されたソケットをstdoutに渡し、終了します。これは、-Xと組み合わせて、ncにプロキシとの接続セットアップを実行させ、残りの接続を別のプログラムに任せる場合に役立ちます(たとえば、ssh_config(5)ProxyUseFdpassオプションを使用したssh(1))。

推測あなたはこの線に沿ってそれを使うことができます:

nc -Fl 22222 | true && echo connection arrived

もちろん、エコーする代わりにサーバーを起動します。 22222はポートで、lはリスニングを表します。

2
user147505