Por que a cadeia de comandos que roda bem no local não é executada no SSH?

0

Há algo engraçado com a combinação tail -f e grep -o ao ser executado sobre o ssh.

Então, no servidor local, se você fizer

tail -f /path/myfile.log |grep -o keyword

É muito bom. Mas se você executá-lo no servidor remoto ....

ssh user@server 'tail -f /path/myfile.log |grep -o keyword'

não funciona. Nada volta como se fosse redirecionado para / dev / null!

Mas se você remover -f da cauda ou -o do grep, trabalhe muito bem ... estranho: - /

Claro que eu poderia criar um script no servidor remoto e apenas executar o script! Mas isso não é adequado para minha situação.

    
por Tyn 31.12.2014 / 16:16

1 resposta

1

Aparentemente, o SSH não faz buffer de linha sem um terminal.

ssh -t garante que o pseudo-terminal criado e, portanto, os programas que usam o buffer de linha funcionem. Isso também garante que seu perfil de login seja executado para que você obtenha a configuração correta do ambiente para o usuário também. Também os comandos baseados em tela, como o vim, funcionam somente se você usar -t flag.

Este blog tem algumas dicas legais link

    
por 01.01.2015 / 00:14