关闭“没有tty存在且没有指定askpass程序”?


1

我正在尝试在多台Mac上远程运行关机脚本。我用来通过ssh启动它的命令是:

ssh ADMIN@mac123 'bash -s' sudo < ./documents/ShutdownUPTIME.sh

当然它要求我输入一个sudo密码,我输入正确。之后唯一的信息是:sudo: no tty present and no askpass program specified

我有什么想法可以解决这个问题吗?我的用户绝对是超级用户

Answers:


2

当您尝试使用sudo和在bash调用中运行命令时,会出现错误消息,尽管ADMIN目标系统上的用户mac123具有运行命令的权限sudoNOPASSWD但未为此特定用户指定选项(in /etc/sudoers)。

系统必须提示用户并等待从键盘提供密码,但是由于没有连接终端,提示将永远挂起。

作为针对此类情况的措施,系统会因您收到的错误消息而失败。


如果你花时间了解我昨天的答案

如果ADMIN 对关机或macxxx机器上的所有命令都有无密码 sudo权限)

你不会遇到这个问题。

你应该修改你的脚本:

...
if [ $DAYS_UP -ge ${MAX_UPDAYS} ];then
    echo Mac is going to shutdown 
    sudo shutdown -h now
else
...

并编辑sudoers文件mac123,以便它包含,例如(它必须匹配脚本中的命令):

ADMIN ALL=(ALL) NOPASSWD: /sbin/shutdown -h now

请记住,您必须使用visudo程序执行此操作,否则您可能会完全破坏您的系统。


或者,您可以使用SUDO_ASKPASS环境变量并将其指向提供密码的脚本(错误消息的第二部分)。我不推荐这种方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.