Jenkins运行Tomcat8时出现sudo: no tty present and no askpass program specified with NOPASSWD错误提示。

3
尝试从我的Jenkins执行器执行sudo命令时,我遇到了标题错误。
在主机(executor)上,我配置了sudoers文件,其中包含这一行:jenkins ALL=(ALL) NOPASSWD: ALL,位于最末尾。
我尝试运行的命令是:sudo service tomcat8 restart
检查可用答案,我是否已经准备就绪或者是否还有遗漏?

https://dev59.com/12Ei5IYBdhLWcg3wFoy9#29685946 - C-Otto
sudo:1 次密码输入错误尝试。 - Jacob
您的sudo设置可能有问题。您使用了visudo吗?同样的设置是否适用于其他用户?您能手动尝试一下吗? - C-Otto
直接使用Jenkins用户从机器上运行相同的命令,无需提示输入任何密码即可正常工作。 - Jacob
2个回答

0

尝试为jenkins用户关闭requiretty。我建议在您的sudoers文件中使用命令别名

Cmnd_Alias RESTART_TOMCAT = /sbin/service tomcat8 *, /etc/init.d/tomcat8 *

Defaults:jenkins !requiretty

jenkins  ALL=(root) NOPASSWD: RESTART_TOMCAT

0

可能有一个解决方法:正如Barmar在评论“在脚本内部使用sudo而不需要密码”中指出的那样,可以允许一个专用脚本由sudoer执行。假设你有一行

 jenkins ALL=(ALL) NOPASSWD:/path/to/restart.sh

这意味着Jenkins可以在不需要密码的情况下执行sudo /path/to/restart.sh命令。

如果您现在将service tomcat8 restart命令放入restart.sh文件中,那么sudo /path/to/restart.sh命令就可以完成工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接