substituição de comando antes do ssh

0

Eu quero gravar os resultados de um trabalho em um arquivo remoto em outro host no meu cluster. Eu sei que posso fazer isso:

echo 'My text' | ssh [email protected] "cat >> ~/my.output"

que irá anexar 'Meu texto' ao arquivo remoto bem. Mas digamos que eu esteja em my.node e quero gravar esse resultado em um arquivo em my.host :

echo "'hostname':My text" | ssh [email protected] "cat >> ~/my.output"

Espero ver my.node:My text em ~/my.output on my.host . Mas o que realmente vejo é isso: my.host:My text .

Como posso obter o valor de hostname substituído antes do comando ssh ? É possível? Eu também tentei isso:

echo "$(hostname):My text" | ssh [email protected] "cat >> ~/test.output"
    
por Simon O'Hanlon 21.01.2016 / 12:09

1 resposta

0

Então, o que você quer é executar um script local remotamente.

Claro, você pode fazer o seguinte:

ssh [email protected] 'echo "$(hostname):My text" >> ~/test.output'

Mas você também pode mover esse código para um arquivo de script e fazer isso:

ssh [email protected] < myscript.sh

E dentro myscript.sh :

echo "$(hostname):My text" >> ~/test.output

Se você não quiser colocar o redirecionamento stdout dentro do script, você pode adicioná-lo antes de canalizar o cliente ssh. Por exemplo:

cat myscript.sh | sed '1iexec >> ~/test.output' | ssh [email protected]

Isso adiciona o redirecionamento do stdout à primeira linha do script ( 1i ). Use 2i se você tiver um shebang .

    
por 21.01.2016 / 12:37