Shell

執行檔的管道輸出到現有的 Netcat 連接

  • September 29, 2018

我打開一個終端視窗並使用以下命令連接到 shell netcat

Terminal Window 1: nc hostname port

然後,我導航到一個目錄並打開一個文件,……等等(我需要自己能夠做到這一點,而不是自動化它)。

然後我可以將電腦上執行檔的輸出通過管道傳輸到netcat連接嗎?

您可能可以使用命名管道來做到這一點。

mkfifo ncpipe
nc hostname port < ncpipe
# --- In a galaxy far, far away (another terminal) ---
somecommand > ncpipe

但是,這存在一些問題……例如,如果您花費的時間太長,則連接可能會超時或其他情況。

也可以雙向執行此操作…我前段時間使用它來轉發本地 telnet 埠,不確定它是否仍然有效:

mkfifo send receive
> send &
> receive &
nc 127.0.0.1 23 < receive > send &
telnet_pid=$!
nc host port < send > receive &
server_pid=$!
wait $server_pid
kill $telnet_pid
rm send receive

無論如何,你可以用命名管道做一些奇怪的事情。但是,您還必須小心它們……如果有一個舊程序打開了管道,則可能會出現意外的輸出。最好為每個任務創建一個閃亮的新乾淨管道,並在完成後刪除。

特別是埠轉發使用 SSH 更容易(和安全)完成,但它並不總是可用。如果在您的場景中可用,則最好只執行以下操作:

somecommand | ssh user@host somereceiver
# or the other way around
ssh user@host somecommand | somereceiver

引用自:https://unix.stackexchange.com/questions/472313