Como incluo espaços em um padrão grep executado por meio de ssh e dockercli?

1

Eu gostaria de grep um arquivo de log em um servidor remoto usando um padrão com espaços, por exemplo.

grep 'words with spaces' log.txt

A parte complicada é que estou executando um comando dockcli remoto sobre o ssh. Algo como:

ssh hostname "dockercli exec -u username dockername grep 'sentence with spaces' logs/filename.log"

Quando o contêiner executa o comando grep, as cotas extras são removidas. Eu tentei escapar as aspas (o comando nunca retorna), invertendo a ordem ('antes') e \ s.

Como eu incluo espaços em um padrão grep executado através de ssh e dockercli?

    
por Patrick Cullen 24.06.2018 / 06:36

1 resposta

1

Eu não tenho dockercli , mas talvez alguns experimentos usando sh -c como substituto possam fornecer um comando similar que está analisando os dados.

Para verificar se grep está sendo passado na string correta, usarei o exemplo

echo 'a   b' | ssh localhost "grep 'a   b'"

Isto corresponde à string de entrada que possui 3 espaços. Se adicionarmos uma camada sh -c extra, precisamos

echo 'a   b' | ssh localhost "sh -c 'grep \"a   b\"'"

e novamente para

echo 'a   b' | ssh localhost "sh -c 'sh -c \"grep   \\"a   b\\"\"'"
    
por 24.06.2018 / 17:49

Tags