O comando de execução no host remoto falha

1

Estou tentando executar alguns comandos no host remoto assim:

ssh -t -t -l user 172.20.20.20 <<EOF
  pid=$(ps -ef | grep [a]pp-management | awk '{print $2}') && kill -9 $pid && rm -rf CI/*
EOF

O que acontece é que eu permaneço logado no servidor remoto e o kill não é executado:

user@ubuntu:~$ pid= && kill -9  && rm -rf CI/*
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]

Nenhumrm é executado, o que estou fazendo errado?

Eu vejo que nada é passado para matar o comando -9, por que isso acontece?

    
por Gandalf StormCrow 11.11.2013 / 16:01

1 resposta

2

As expansões introduzidas pelos sinais $ no heredoc são avaliadas localmente, antes de gerar a string que é passada como entrada para o comando ssh .

Para evitar isso, escape dos comandos em seu heredoc, por exemplo, com aspas em torno de EOF

ssh ... <<"EOF"
    
por 11.11.2013 / 16:13