在Jenkins的使用过程中,如果在脚本中使用到sudo命令,有可能出现如下所示的错误:
sudo: no tty present and no askpass program specified
这是因为Jenkins服务器在执行sudo命令时的上下文有误,导致这个命令执行的异常。
解决方案:
- 在Jenkins宿主服务器上运行如下命令
$ sudo visudo - 在文件的末尾加上一行
jenkins ALL=(ALL) NOPASSWD: ALL - 保存文件(注意保存的时候修改文件名,文件名后缀不要加上默认的.tmp,即可覆盖原文件)
Ctrl+O - 退出编辑
Ctrl+X - 重启Jenkins服务
$ /etc/init.d/jenkins restart
最后,重新执行构建任务,不会出现先前的错误。
PS:如果误操作修改了/etc/sudoers的权限来修改上述文件,则会导致如下所示的错误:
sudo :/etc/sudoers is world writable
sudo : no valid sudoers source found, quitting
sudo : unable to initialize poling plugin
这是Linux的一种保护机制。因此,如果出现上述误操作,则需要执行如下命令来解决:
$ pkexec chmod 0440 /etc/sudoers
本文介绍了解决Jenkins在执行sudo命令时遇到的错误'nottypresentandnoaskpassprogramspecified'的方法。通过修改sudoers文件赋予Jenkins用户免密码执行所有sudo命令的权限,并重启Jenkins服务来解决问题。
6300





