スクリプトでNetcatを使用する(ターゲットにログインする必要はありません)

スクリプトでNetcatを使用する(ターゲットにログインする必要はありません)

私は自宅のすべてのUnixデバイスをローカルサーバーのtar | pv | pigz | ncに設定するバックアップ方法を持っています。多くの例で見たように、まずターゲットシステムがポートでリッスンする必要があります(物理的またはSSH経由など)。

nc -w 60 -l 19001 > /dir/to/backup.tgz

その後、現在のマシンでストリームの送信を開始します。

tar -cpf - /dir/to/backup | pv | pigz | nc -w 10 dest.i.p.addr 19001

プロセス中にホストコンピュータで複数の端末を開く必要がなくなり、ほぼワンクリックで完了するようにこのスクリプトを作成しようとしています。通常、実行のためにsshを介してコマンドを送信することは、

ssh -f [email protected] "nc -w 60 -l 19001 > /dir/to/backup.tgz"

ただし、ポートが開いていてデータが送受信されている間、backup.tgzファイルはいっぱいになるのではなく、常に空であると読み込まれます。これにより、SSHを介して1行でコマンドを送信すると、リスンポートが開いたままにならないと信じられました。

表示されない他のパスはありますか?または、リスニングセッションを作成するには、常にターゲットコンピュータにログインする必要がありますか?

関連情報