我试图在here-document中通过SSH运行命令:
ssh example.com <<END
sudo /etc/init.d/apache2 reload
END
除了当我尝试运行需要输入的内容(例如sudo的密码)时,该选项通常可以正常工作。在这种情况下,我收到以下消息:
sudo: no tty present and no askpass program specified
我知道我可以使用-t
SSH上的标志来分配伪tty,例如:
ssh -t example.com "sudo /etc/init.d/apache2 reload"
它将起作用,但是当我对here-document尝试相同的操作时,它将不起作用,并且我将收到关于不存在tty的相同错误:
ssh -t example.com <<END
sudo /etc/init.d/apache2 reload
END
知道如何使这项工作有效吗?
另外,如果您想知道为什么我希望它与here-document一起使用,而不是仅将其传递在同一行上,那是因为输入命令(可能有几个)来自脚本读取的配置文件而且我听说它避免了转义引号,双引号等命令的麻烦。