我在远程服务器上有一个 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
指示-E
将smbclient
所有消息发送到标准错误而不是标准输出,这些消息会弄乱我们实际想要的输出。我对这些消息不感兴趣,因此这些消息被2>/dev/null
.
用于-U $USERNAME
指示连接到 SMB 服务器时应使用的用户名。
应该//server/sharename
是显而易见的。
SMB 服务器上的$PASSWORD
密码。$USERNAME
这-c 'get \\dir\\filename.gz /dev/fd/1'
是应该执行的命令:获取指定文件(通过加倍反斜杠来转义),并将其发送到/dev/fd/1
与命令的标准输出相同的本地文件。然后zcat
,在需要进行任何进一步处理之前,通过管道传输标准输出以对其进行扩展。