使用 SMB 将文件内容通过管道传输到本地机器上的本地命令

Dyl*_*lan 3 file-server pipe smb

我在远程服务器上有一个 100gig 文件,我需要做的是连接到那台机器和 zcat 该文件并将 zcat 的输出通过管道传输到本地机器上的命令......我希望 smbclient 会有所帮助,但我可以'似乎找到了一种在本地运行命令的方法,但管道的左侧来自远程源。

我认为使用我编写的命令 remoteZcatCommand会有点像

remoteZcatCommand 100gigRemotefile.gz | grep findSomeStuff

这可能有点误导,因为grep findSomeStuff实际上是一个需要本地机器上的硬件的命令。也不能将 100gig 文件移动到本地计算机。

wur*_*tel 8

smbclient -E -U $USERNAME //server/sharename $PASSWORD -c 'get \\dir\\filename.gz /dev/fd/1' 2>/dev/null | zcat | yourcommand
Run Code Online (Sandbox Code Playgroud)

-E指示smbclient所有邮件发送到标准错误而不是标准输出,其中这些消息会搞乱输出,我们实际上想要的。我对这些消息不感兴趣,所以它们被2>/dev/null.

-U $USERNAME是指示连接到SMB服务器时,用户名是什么,应使用。

//server/sharename应该是显而易见的。

$PASSWORD$USERNAME的SMB服务器上的密码。

-c 'get \\dir\\filename.gz /dev/fd/1'是应该执行的命令:获取命名文件(通过加倍来转义反斜杠),并将其发送到/dev/fd/1与命令的标准输出相同的本地文件。然后zcat,在需要进行任何进一步处理之前,标准输出将通过管道进行扩展。