指定されたローカルの開いているポートへのリモート接続が正常に確立されたら、bash
コマンドを実行したいと思います。 netcat と socat を調べましたが、どちらにも必要な機能があるかどうかはわかりません。通信の内容は気にせず、接続が確立されているだけです(接続は開始後すぐに切断できます)。
これは、要求された場合にのみ起動したいローカルリソース( Minecraft サーバー)があるためです。理論的には、クライアントは接続を試行する必要があり(もちろん、最初は失敗します)、サーバーが起動し、しばらくすると、クライアントは実行中のサーバーにもう一度接続できます。
nc
には-F
オプションがあります。
-F
sendmsg(2)を使用して最初に接続されたソケットをstdoutに渡し、終了します。これは、-Xと組み合わせて、ncにプロキシとの接続セットアップを実行させ、残りの接続を別のプログラムに任せる場合に役立ちます(たとえば、ssh_config(5)ProxyUseFdpassオプションを使用したssh(1))。
私推測あなたはこの線に沿ってそれを使うことができます:
nc -Fl 22222 | true && echo connection arrived
もちろん、エコーする代わりにサーバーを起動します。 22222
はポートで、l
はリスニングを表します。