web-dev-qa-db-ja.com

コマンドラインからtcpを介してデータをパイプする方法は?

コマンドラインのあるマシンからtcpを介して別のマシンにデータをパイプしたいと思います。ソケットサーバーを作成できると思いますが、これはすでに実装されている必要があります。 たとえばこれを使用してファイルをxzし、ネットワーク経由で指定されたポートを介して反対側に送信できます。それをデコードして保存できます:

マシンA:strarc -c -d:c:/windows | xz -c -z - | magicsend -p 80 -h 192.168.1.100マシンB:magicreceive -p 80 | xz -d -f - | strarc -x -d:x:/windows

Linuxおよび/またはWindowsでオープンソースツールを使用してこれを実行したいと思います。したがって、[n非公式] Windowsポートを備えたLinuxツールが推奨されます。 :)

実用的なコマンドラインの例は大歓迎です。

(Linuxの例ではcat /vmlinuzstrarc の代わりに、完全に同等ではないことを確認してください。 ;))

3
n611x007

Netcatを使用します。 「mannetcat」の「CLIENT/SERVER」セクションを参照してください。 1台のマシンB:

nc -l 1234 | xz -c > sammy.xz

マシンA:

cat sammy | nc 192.168.1.100 1234

この方法でポートを開いたままにしておくと、セキュリティに影響する可能性があることに注意してください。

mpy が指摘しているように、送信側で圧縮する方がネットワーク帯域幅の点でより効率的です。

xz -c sammy | nc 192.168.1.100 1234

そして、受信側で保存するだけです。

nc -l 1234 > sammy.xz

Netcat ニーズに合うはずです。ドキュメントが手元にないのでわかりませんが、送信側のコマンドは[...] | nc -h192.168.1.100 -p80で、受信側のコマンドはnc -l -p80 | [...]を使用すると思います。

2
Aaron Miller

(magicsendまたはmagicreceiveのいずれかを実行するために)少なくとも1台のマシンにリモートログインする必要があるので、sshを使用できますか?

sshクライアントはWindowsで簡単に入手できます(たとえば、cygwinをインストールするだけです)。sshサーバーも簡単に入手できますが、インストール/構成が難しい場合があります。

現在マシンAのコンソールを使用していて、マシンBがリモートの場合は、次のようになります。

マシンA:strarc whatever | xz -c -z - | ssh me@machineB '(xz -d -f - | strarc somethingelse)'

または、マシンBのコンソールを使用していて、マシンAにリモートログインする必要がある場合は、次のようにします。

マシンB:ssh me@machineA '(strarc whatever | xz -c -z -)' | xz -d -f - | strarc somethingelse

1
Wandering Logic