TL; DR:はい、しかし、あなたはパイプで連結されたcat
cat
より賢く何かが単にそれに与えられたすべてのファイルを連結し、stdout
にそれらをダンプし、道ご参照Qので-
は、標準入力を表し必要があります/ stdinをファイルに連結することで作業しました。
netcat
は、未加工のパイプを他のポートに開く限り、何をしようとしているかのための優れたツールです。私はあなたのためのより良い質問は、cat
正しいツールからのパイプ出力ですか? No.
ちょうどcat ... | netcat ...
を使用している問題はその一方的な方法です。 cat
の出力はnetcat
への入力として使用されますが、出力はstdout
になります。パイプは双方向ではなく、対話性が必要です。
netcatパイプを介してサーバーからの応答に基づいて対話的にアクションを実行する場合は、プログラムでパイプとやりとりするためのさまざまな方法があります。
たとえば、read
、またはexpect
を使用できます。
あなたの道具箱を展開するために喜んでいる場合、私はnetcat
のより近代的な実装であり、netcat
パイプにコマンドやスクリプトの装着を可能に便利なオプション-e
を持ってncat
を使用することをお勧め少し。 netcat
を手に入れることができない場合は、-e
と同じ効果を得るには、名前付きパイプとI/O Redirectionについていくつか学ぶ必要があります。私はnetcat
を経由して送信された複数のファイルを扱っリスニングサーバを書いていないテスト/例
は下記を参照してください、この答えを書く前にこのようなもののいくつかをテストしたい
は、私は行きますよあなたはそれが動作していると仮定することができますが、私はクライアント側からのプログラム的なやりとりをシミュレートし、手作業でサーバを実行することができます。私は、「サーバを起動
#!/bin/bash
i=0
while true; do
read line
if [[ $line == "goose" ]]; then
echo "zoom"
exit 0
else
i=$(expr $i + 1)
echo "$i ..."
fi
done
:
マイダミー「クライアント」/「サーバー」対話は、ここで私はこの単純な対話型のスクリプトを書いたseting up 2 ncat sessions to talk to each other
のこの楽しいアクティビティに基づいています"ncat -l -p 1337
- インタラクティブスクリプトによって制御される"クライアント "を開始します。
ncat localhost 1337 -e ./interact.sh
そして(NCATは明らかに私はo:
とi:
と出力と入力を表記しましたO対示していないので)私は手で「サーバー」を操作する:
i:duck
o:1 ...
i:duck
o:2 ...
i:duck
o:3 ...
i:goose
o:zoom
これは必ず[のように思えますXYの問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)ここで、実際にはファイル転送ではないのに、ソリューションが 'netcat'であると判断したツール。 –
問題の解決を試みるために私たちが試みたこと(https://mattgemmell.com/what-have-you-tried/)を奨励したと思いました。 – user124384