Estou tentando executar um comando sobre SSH como este em um documento aqui:
ssh example.com <<END
sudo /etc/init.d/apache2 reload
END
O que normalmente funciona, exceto quando estou tentando executar algo que precisa de entrada, como a senha do sudo. Nesse caso, estou recebendo a seguinte mensagem:
sudo: no tty present and no askpass program specified
Eu sei que posso usar o -t
sinalizador no SSH para alocar uma pseudo-tty como esta:
ssh -t example.com "sudo /etc/init.d/apache2 reload"
E funcionará, mas quando eu tentar a mesma coisa com o documento aqui, ele não funcionará e eu receberei o mesmo erro sobre a ausência de tty:
ssh -t example.com <<END
sudo /etc/init.d/apache2 reload
END
Alguma idéia de como eu posso fazer isso funcionar?
Além disso, caso você esteja se perguntando por que eu quero que ele funcione com o documento aqui, em vez de apenas passá-lo na mesma linha, é porque os comandos de entrada (pode haver alguns) vêm de um arquivo de configuração lido por um script e eu ouvi-lo evita o problema de escapar dos comandos para as aspas, aspas duplas, etc.