Pipe

使用 SMB 將文件內容通過管道傳輸到本地電腦上的本地命令

  • April 16, 2019

我在遠端伺服器上有一個 100gig 文件,我需要做的是連接到該機器並 zcat 該文件並將 zcat 的輸出通過管道傳輸到本地機器上的命令……我希望 smbclient 會有所幫助,但我可以’似乎找不到一種在本地執行命令的方法,但管道的左側來自遠端源。

我認為它看起來像我編造的命令 remoteZcatCommand

remoteZcatCommand 100gigRemotefile.gz | grep findSomeStuff

這可能有點誤導,因為grep findSomeStuff實際上是一個需要本地機器上的硬體的命令。也不能將 100gig 文件移動到本地電腦。

smbclient -E -U $USERNAME //server/sharename $PASSWORD -c 'get \\dir\\filename.gz /dev/fd/1' 2>/dev/null | zcat | yourcommand

-E指示將smbclient所有消息發送到標準錯誤而不是標準輸出,這些消息會弄亂我們實際想要的輸出。我對這些消息不感興趣,所以這些消息被2>/dev/null.

-U $USERNAME用於指示連接到 SMB 伺服器時應使用的使用者名。

//server/sharename應該是顯而易見的。

$PASSWORD$USERNAMESMB 伺服器上的密碼。

-c 'get \\dir\\filename.gz /dev/fd/1'是應該執行的命令:獲取命名文件(通過將它們加倍來轉義反斜杠),並將其發送到/dev/fd/1與命令的標準輸出相同的本地文件。zcat然後在需要進行任何進一步處理之前通過管道傳輸標準輸出以對其進行擴展。

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