TL; DR:是的,但你需要的東西比一個管道cat
cat
只是聰明串接給它的所有文件,並將它們轉儲到stdout
,-
代表標準輸入這樣的方式您參考Q /一對工作是通過連接標準輸入到文件。
netcat
是一個很好的工具,用於你想要做的只要打開一個原始管道到另一個端口。我認爲對你來說更好的問題是,從cat
管道輸出正確的工具?
剛剛使用cat ... | netcat ...
的問題在於它是單向交易。 cat
的輸出用作netcat
的輸入,但輸出將轉到stdout
,管道不是雙向的,需要交互性。
如果您希望基於服務器在您的netcat管道上的響應交互式執行操作,則可以通過編程方式與管道進行交互。
例如,您可以使用read
或expect
。
如果你願意擴展您的工具箱我建議使用ncat
這是一個更現代的實行netcat
,具有方便的選項-e
,它允許一個命令或腳本來netcat
管的附着一點點。如果您無法通過-e
與netcat
握手,您可能需要了解一些關於命名管道的內容,並獲得相同的效果I/O Redirection。
我想要寫這個答案之前測試的一些這方面的東西,請參閱下面的測試/例子
我沒寫處理通過netcat
發送多個文件監聽的服務器,我只是去假設你有這樣的工作,但我可以模擬客戶端的一些程序化交互,並手動執行服務器。
我的虛擬「客戶」 /「服務器」互動這裏是基於seting up 2 ncat sessions to talk to each other
這個有趣的活動,我寫了這個簡單的交互式腳本:
#!/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
我開始了我的「服務器「ncat -l -p 1337
- 我開始由交互式腳本控制的我的」客戶端「
ncat localhost 1337 -e ./interact.sh
我用手操作 「服務器」(因爲NCAT沒有清楚地顯示我VS O I所譜寫的輸入與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