在here-document中通过SSH运行命令时不存在TTY

在here-document中通过SSH运行命令时不存在TTY,第1张

概述我正在尝试通过这样的文档在这样的SSH上运行命令: ssh example.com <<ENDsudo /etc/init.d/apache2 reloadEND 除非我正在尝试运行需要输入的内容,例如sudo的密码,否则通常可以正常工作.在这种情况下,我收到以下消息: sudo: no tty present and no askpass program specified 我知道我可以在S 我正在尝试通过这样的文档在这样的SSH上运行命令:
ssh example.com <<ENDsudo /etc/init.d/apache2 reloadEND

除非我正在尝试运行需要输入的内容,例如sudo的密码,否则通常可以正常工作.在这种情况下,我收到以下消息:

sudo: no tty present and no askpass program specifIEd

我知道我可以在SSH上使用-t标志来分配伪tty,例如:

ssh -t example.com "sudo /etc/init.d/apache2 reload"

它会工作,但是当我在这里尝试同样的事情 – 文档时,它不起作用,我将得到关于没有tty存在的相同错误:

ssh -t example.com <<ENDsudo /etc/init.d/apache2 reloadEND

知道如何让这个工作吗?

另外,如果你想知道为什么我希望它使用here-document而不是只是在同一行上传递它,那是因为输入命令(可能有几个)来自脚本读取的配置文件而且我听说它避免了转义引号,双引号等命令的麻烦.

解决方法 使用visudo编辑sudoers文件并插入以下行:
Defaults:<user>    !requiretty

It doesn’t answer why using the ssh -t "something" versus ssh -t
<<Stop something Stop
doesn’t work. Let’s say I’m not using sudo but
I’m using passwd for my own user directly,I still won’t get the TTY
using the heredoc.

尝试ssh -t -t强制伪tty分配,即使stdin不是终端.

总结

以上是内存溢出为你收集整理的在here-document中通过SSH运行命令时不存在TTY全部内容,希望文章能够帮你解决在here-document中通过SSH运行命令时不存在TTY所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1044173.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存