SocatはSSHを介して自己整理することはできません。

SocatはSSHを介して自己整理することはできません。

SSH、socat、および私が作成した他のユーティリティを使用して、ローカルコンピュータに接続されているコンピュータと通信しようとしています。

私がやっているソースマシンから:

ssh root@localhost -p 2004 'socat -u TCP-LISTEN:5000 OPEN:foo.test,creat'

(質問に関係なく、現在実行中のユーティリティを使用して4000を5000にマップします。)次に、次の手順を実行します。

socat -d -d TCP:localhost:4000 ./some_file

ファイル転送が正しく発生します。問題は、この種のタスクを連続してすばやく実行する必要があり、初期socat TCP-LISTENサーバー設定が完全​​に終了しないことです。ポートが消えるまで待たなければならないからです。それ以外の場合は、次のエラーが発生します。 :

2016/05/14 11:56:01 socat[655] E bind(3, {LEN=0 AF=2 0.0.0.0:5000}, 16): Address already in use

どのコンセントでもきれいに掃除できるsocatオプションはありませんか?デフォルトでは、ファイル転送にはこれが必要です。リモートシステムを一度だけ閉じるにはsocatが必要です。

ssh編集:ファイルパスが毎回異なるため、わざと使用しなければならずOPEN、一つずつすばやく行う必要がありました。

答え1

に変更できますが、TCP-LISTEN:5000問題TCP-LISTEN:5000,reuseaddrは、たとえばテスト中に中断が発生したため、リモートでsocatが停止していない可能性がありsshますControl-C

socat単に要求しfork、同じ操作をやり直すために新しい接続を再受信すると、起動の繰り返しを回避できます。

socat -u TCP-LISTEN:5000,reuseaddr,fork OPEN:foo.test,creat

関連情報