如何在 Linux 上使用 SSH 管道

如何在 Linux 上使用 SSH 管道
一名男子在電腦前工作的照片。

UNIX 管道是 UNIX 和類 UNIX 作業系統開發中具有里程碑意義的一步。它允許用戶透過將基本程式的輸入和輸出連結在一起來執行複雜的計算任務。本文對此進行了擴展,向您展示如何透過具有 SSH 協定的網路在 Linux 中使用 UNIX 管道。

了解 Unix 管道

Unix(以及 Linux)上的管道用於將程式連結在一起並使它們協同工作。例如,使用 cat,您可以顯示文件的內容,但如果您使用管道 (|),則可以連結 < a i=3> 指令新增到 命令中,以使文件更易於閱讀。catmore

這裡的基本思想是:program1 fileX | program2。不過,它不僅限於一個文件和兩個程式。管道可以達到您需要的程度,並具有您能想到的盡可能多的修飾符。

以下是一些在 SSH 情況下充分利用管道 (|) 的方法。

自動傳輸壓縮目錄

使用 UNIX 管道最常見的方法之一是將程式的輸出儲存到本機系統中某處的檔案中。例如,執行 echo "Hello, MakeTechEasier!"| tee Hello 將運行程式 echo,同時也會儲存字串“Hello, MakeTechEasier!”在檔案“Hello”中。

顯示本機電腦中基本 UNIX 管道重定向的終端。

也就是說,您可以使用這個想法在兩台 Linux 主機之間傳輸目錄。為此,請使用 tar 讀取要傳送的資料夾,然後將其透過管道傳輸到 SSH 守護程式:

此命令會將您的資料夾捆綁到 tar 檔案中並將其發送到命令的標準輸出。然後,UNIX 管道將讀取該資料並使用 SSH 將其傳送到遠端 Linux 主機。

您也可以反轉此命令以從遠端主機取得檔案:

從遠端主機推送和檢索文件

您也可以使用管道和 SSH 透過網路傳送單一檔案。這是透過使用 cat 作為載入檔案內容並透過 SSH 發送該內容的方式來實現的:

遠端主機將從本機 cat 進程接收輸出流並按原樣重建檔案。

要從遠端主機檢索文件,您需要顛倒命令順序並提供遠端文件的路徑:

顯示在 Linux 中使用 SSH 管道進行單一檔案傳輸的終端。

遠端備份和復原磁碟機

與傳送檔案和目錄類似,可以使用 UNIX 管道和 SSH 遠端備份 Linux 中的整個磁碟機。如果您想建立快速異地備份並且目前沒有備用實體驅動器,這可能會很有用。

要備份整個驅動器,請執行dd,並將其「if=」變數設為您要備份的驅動器,然後透過管道將其傳輸到您的SSH 守護程序:

反轉此命令還允許您將磁碟映像從遠端電腦還原到實體磁碟:

此外,此 SSH 管道語法也適用於離散磁碟分割區。例如,如果您的系統在「/dev/sda4」中有一個 /home 分割區,您可以執行下列命令來建立它的備份:

將音訊輸入重定向到遠端計算機

SSH 管道的好處之一是它們允許您與遠端電腦進行交互,就像它們是本地資源一樣。這包括利用設備檔案的能力,例如係統的音訊輸入。

為此,請使用 SSH 執行遠端 ALSA 子 shell,並將其輸出傳送至本機 ALSA 守護程式:

這將監聽遠端電腦上的預設音訊輸入裝置並播放您系統上聽到的內容。也就是說,翻轉指令會將本機的音訊輸入傳送到遠端主機的音訊輸出:

使用 SSH 管道顯示活動音訊串流的終端。

當您將 ALSA SSH 管道與其他音訊播放工具結合使用時,它也可以工作。例如,您可以將 arecord 輸出從 SSH 管道傳送到 ffmpeg:

從遠端網路攝影機串流即時視訊

Linux 中 SSH 管道的另一個重要用途是串流即時視訊網路攝影機來源。就像音訊一樣,這允許您利用遠端主機的裝置並在本機上呈現其輸出。

若要從遠端主機的網路攝影機進行串流傳輸,請使用 ffmpeg 子 shell 執行 SSH,然後透過管道將其傳輸到本機上的視訊播放用戶端:

此命令將從遠端電腦上的第一個網路攝影機傳輸原始視訊輸出。

顯示透過 Linux 中的 SSH 管道的活動網路攝影機視訊來源的螢幕截圖。

也可以將遠端網路攝影機的鏡頭記錄到單獨的檔案中。您可以透過將資料從 SSH 管道傳送到 tee,然後將其重新導向到視訊播放器來完成此操作:

除了音訊和視訊之外,您還可以使用 SSH 管道在遠端電腦的 TTY 上發送原始文字。如果您想向沒有 GUI 的系統發送狀態訊息,這會很有幫助。

首先,在本機電腦上建立一個 FIFO 管道:

使用 FIFO 執行監聽tail 指令並將其輸出傳送至 SSH 守護程式:

透過使用 echo 命令發送文字資料來測試您的新 FIFO 管道是否在網路上運作:

在電腦的 TTY 控制台中顯示任意文字的終端機。

將遠端資料透過管道傳輸到本地剪貼簿

系統剪貼簿的最大缺點是它僅適用於本機。如果您使用多台電腦並且想要傳輸資料而不建立臨時文件,這就會成為問題。

解決此問題的一種方法是建立一個 SSH 管道,該管道可以讀取遠端檔案並將其直接發送到本機系統剪貼簿:

此命令將連接到您的遠端計算機,運行 cat 實用程序,然後開始讀取“ramces.txt”檔案。完成後,它將把遠端資料發送回您的本機計算機,並將其重定向到您的系統剪貼簿。

在 SSH 管道後顯示本地電腦剪貼簿的終端。

您也可以使用以下命令將系統的目前剪貼簿作為檔案推送到遠端電腦:

學習如何使用 UNIX 管道和 SSH 透過網路傳送資料只是了解電腦網路運作原理的第一步。透過使用 Traceroute 追蹤封包的去向來了解更多關於網路的資訊

圖片來源:Mikhail Fesenko,來自 Unsplash。所有修改和螢幕截圖均由 Ramces Red 進行。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *