Não é possível executar uma sequência de comandos usando o SSH

1

Não consigo usar alguns comandos sudo durante o login no ssh. Eu estou usando o seguinte comando, mas não está funcionando corretamente.

  

ssh hypr1000.opsr.com "ot = sudo lista virsh --all | grep executando | awk '{print $ 2}' | tail -2; sudo virsh dominfo $ ot"

Esta é a mensagem de erro retornada:

error: command 'dominfo' requires <domain> option

O que devo fazer para que este comando seja executado com sucesso?

    
por sasuke 27.05.2013 / 17:24

1 resposta

3

Você está basicamente executando ssh host "var=value; echo $var" . O shell executa a expansão de variável antes de ssh receber o comando. Assim, o comando atual recebido por ssh se torna:

var=$value; echo 

Para evitar que o shell consuma seu dólar, use aspas simples:

ssh host 'var=value; echo $var'

Considerando seu comando, parece que você está tentando usar a saída de um comando no último. Para que isso aconteça, você deve fazer uso adequado da substituição de comandos:

  

host ssh 'output = $ (sudo lista virsh --all | awk "/ running / {print \ $ 2}" | tail -2); sudo virsh dominfo $ output '

Ou até mesmo:

  

host ssh 'sudo virsh dominfo $ (sudo lista virsh --all | awk "/ running / {print \ $ 2}" | tail -2)'

Isso pressupõe que sudo esteja configurado para não solicitar uma senha, caso contrário você receberá um erro como:

sudo: no tty present and no askpass program specified
    
por Lekensteyn 27.05.2013 / 17:33