Redirecionar stdout sobre ssh

17

Eu gostaria de correr

something > file

em um sistema remoto através do ssh, mas se eu correr

ssh host something > file

o redirecionamento é executado localmente como ssh etc > file

Eu tentei com ' ou '' ou dd ou com um pipe | , mas não consigo fazer isso funcionar. Como isso pode ser feito?

    
por franziskus 05.09.2010 / 16:38

3 respostas

11

Tente:

ssh host 'something > file'

Aqui está uma demonstração artificial de como lidar com redirecionamentos, canais e citações:

ssh host date -d yesterday \| awk "'{print $1}'" \> 'file" "with\ spaces.out'

O canal e o redirecionamento são escapados em vez de estarem contidos em um conjunto externo de cotas, reduzindo a necessidade de escapar de um nível de cotações. As aspas simples para o comando AWK são protegidas pelas aspas duplas que as cercam. O nome do arquivo pode ser protegido da mesma forma, mas aqui mostro como as aspas simples protegem as aspas duplas e a fuga.

    
por 05.09.2010 / 17:05
8

Ainda mais simples, em vez de:

ssh host something > file

faça:

ssh host "something > file"
    
por 05.09.2010 / 18:46
3

A solução sugerida também funciona com tubos

ssh host 'some_command | some_other_command'
    
por 06.04.2012 / 16:23