web-dev-qa-db-ja.com

netcat経由でファイルを送信する

次のようなものを使用して、あるコンピュータから別のコンピュータにファイルを送信します。

ファイルを提供するには(コンピューターA):

cat something.Zip | nc -l -p 1234

ファイルを受信するには(コンピューターB):

netcat server.ip.here. 1234 > something.Zip

私の質問は...反対のことはできますか?コンピューターBにファイルがあり、それをAに送信したいが、上で書いた方法ではなく、ファイルを受信するはずのコンピューター(A)を「リスニング」サーバーにして、「送信」ファイルであるコンピューターに接続するとします( B)サーバーに送信してファイルを送信しますか?出来ますか?そうかもしれないと思いますが、これを行う方法がわかりません。

上記の説明がめちゃくちゃになっている場合:サーバーでファイルを提供してからそれを(上記で行ったように)取得するのではなく、「サーバー」にファイルを送信するにはどうすればよいですか?

28
Phil

サーバー(A):

 nc -l -p 1234 -q 1> something.Zip </dev/null
 cat something.Zip | netcat server.ip.here 1234 
42
martinwguy

注意として、ファイルのアクセス許可、所有権、タイムスタンプも保持したい場合は、netcatとともにtarを使用して、ディレクトリとファイルの転送を行います。

受信システム:

nc -l -p 12345 -q 1 | tar xz -C /path/to/root/of/tree

送信システムから:

tar czf - ./directory_tree_to_xfer | nc <Host name or IP address of receiving system> 12345 

お役に立てば幸いです。

6
B.Kaatz

コンピューターA:nc -l -p 1234 > filename.txt

コンピュータB:nc server.com 1234 < filename.txt

あまりにも動作するはずです;)

3
mark

コンピューターBでnetcatの別のインスタンスを起動します。コンピューターAで実行したことを実行し、Bからサービスを提供します。新しいサーバーに新しいポートを割り当てます。

0
DaveParillo