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

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

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

我认为我的情况会是什么样子组成的命令 远程Zcat命令

remoteZcatCommand 100gigRemotefile.gz | grep findSomeStuff

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

答案1

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

指示-Esmbclient所有消息发送到标准错误而不是标准输出,这些消息会弄乱我们实际想要的输出。我对这些消息不感兴趣,因此这些消息被2>/dev/null.

用于-U $USERNAME指示连接到 SMB 服务器时应使用的用户名。

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

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

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

相关内容