私はソケットサーバーを起動し、そのソケットポートからの着信要求を別の内部ポートに転送するツールを探しています。
socat
私は通常ソケットポートを転送することが可能であることを発見しました。
socat tcp-l:8080,fork,reuseaddr tcp:127.0.0.1:12345
これにより、「公式」ポートが8080
内部ソケットポートに正常に転送されます12345
。
しかし、私の問題は、クライアントがポートに接続できる必要があることです。8080
でも12345
現在内部ポートが利用できない場合。
socatの問題は、実際のソケットサーバーを作成するようには見えず、ポートを再マップし、ポートをLISTENING状態に設定することです。
私はクライアントに「成功的に接続しました。入力内容を送ってください」と伝えるツールを探しています。ローカルポートが12345
利用できない場合、クライアントからデータを送信しようとするとエラーが発生します。
したがって、ローカルアプリケーションがダウンしても、クライアントはまだその公式ウェブサイトに接続できる必要があります。
独自のツールを作成せずにこれを達成できますか?
答え1
次のように起動できます。
socat tcp-l:8080,fork,reuseaddr \
SYSTEM:'nc -z 127.0.0.1 22 >/dev/null && exec nc 127.0.0.1 22 || echo "Fail!"'
tcp:127.0.0.1:12345
したがって、shell_fragment / scriptを生成する必要はありません。
Check, if 127.0.0.1 12345 responds
if yes, connect there and pass over the fds (exec)
if no, echo "Service@12345 is down"
Optional: don't exit, but enter a while loop
Try reaching port 12345, then connect eventually
オプションの部分については、'echo "Fail!"を次のように置き換えます。
{ echo "SomeMsg; MoreCommands; }
私が助けることができます。調整に役立つ場合は、問題のある情報でQを更新してください。
答え2
ncatはあなたが行くべき場所に連れて行きます。ポートでリッスンしてパケットを受け入れます。例をご覧ください。
ncat -l localhost 8080