Usando o SMB para canalizar o conteúdo do arquivo para o comando local na máquina local

2

Aqui está a minha situação. Eu tenho um arquivo de 100gig em um servidor remoto, o que eu preciso fazer é conectar a essa máquina e zcat esse arquivo e canalizar a saída do zcat para um comando em uma máquina local ... Eu estava esperando que o smbclient ajudaria, mas eu posso t parece encontrar uma maneira de executar um comando localmente, mas tem o lado esquerdo do tubo vindo de uma fonte remota. Qualquer sugestão seria tão útil, não procurando uma caminhada apenas se isso for possível e talvez o comando a ser usado. Eu posso descobrir a sintaxe e tal ...

O que eu acho que vai parecer com o meu comando inventado remoteZcatCommand

remoteZcatCommand 100gigRemotefile.gz | grep findSomeStuff

Isso talvez seja um pouco enganador, pois grep findSomeStuff será realmente um comando que requer o hardware na máquina local. Também mover o arquivo de 100gig para a máquina local não é uma opção.

    
por Dylan 16.03.2015 / 04:08

1 resposta

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

O -E instrui o smbclient a enviar todas as mensagens para o erro padrão, em vez do padrão, onde essas mensagens atrapalharão a saída que realmente desejamos. Eu não estou interessado nessas mensagens, então elas são descartadas pelo 2>/dev/null .

O -U $USERNAME indica qual nome de usuário deve ser usado ao conectar-se ao servidor SMB.

O //server/sharename deve ser óbvio.

A senha de $PASSWORD é $USERNAME no servidor SMB.

O -c 'get \dir\filename.gz /dev/fd/1' é o comando que deve ser executado: obtenha o arquivo nomeado (escapando das barras invertidas, dobrando-as) e envie-o para o arquivo local /dev/fd/1 , que é igual à saída padrão do comando. A saída padrão é então canalizada através de zcat para expandi-la antes de qualquer processamento adicional ser necessário.

    
por 16.03.2015 / 09:48