sudo seguido por outro comando em ssh heredoc não está funcionando

1

Este é o meu script:

#!/bin/sh

echo "I'm local"

ssh -t -t remote.server << 'EOF'
    sudo echo "I'm remote and sudo"
    echo "I'm remote but not sudo"
    exit
EOF

Isso simplesmente não funciona, talvez porque a linha echo "I'm not sudo" seja fornecida como senha.

Como posso fazer isso funcionar sem:

  • alimentando a senha diretamente no script
  • ativar o sudo sem senha ou
  • fazendo tudo sudo?

Ou, talvez, minha abordagem seja completamente errada ou incomum para esse propósito?

    
por akai 18.06.2018 / 09:51

1 resposta

1

Na minha opinião, a única maneira é dividir em dois comandos ssh separados:

#!/bin/sh

echo "I'm local"

ssh -t remote.server "sudo echo \"I'm remote and sudo\""
ssh -t remote.server "echo \"I'm remote but not sudo\""

O redirecionamento que você usa sempre redirecionará todo o bloco para o comando e não esperará qualquer sucesso do subcomando (ou falha).

    
por 18.06.2018 / 13:18