ti-enxame.com

Redirecionar stdout sobre ssh

Eu gostaria de correr

something > file

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

ssh Host something > file

o redirecionamento é executado localmente como ssh etc > file

Eu tentei com ' ou '' ou dd ou com um pipe | em vez disso, mas não consigo fazê-lo funcionar. Como isso pode ser feito?

19
franziskus

Experimentar:

ssh Host 'something > file'

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

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

O canal e o redirecionamento são escapados em vez de contidos em um conjunto externo de cotações, 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 maneira, mas aqui mostro como as aspas simples protegem as aspas duplas e a fuga.

11

Ainda mais simples, em vez de:

ssh Host something > file

faz:

ssh Host "something > file"
12
Amala

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

ssh Host 'some_command | some_other_command'
3
Mike