解决Jenkins执行sudo命令时出现“sudo: no tty present and no askpass program specified”的错误

在Jenkins的使用过程中,如果在脚本中使用到sudo命令,有可能出现如下所示的错误:

sudo: no tty present and no askpass program specified

这是因为Jenkins服务器在执行sudo命令时的上下文有误,导致这个命令执行的异常。

解决方案:

  1. 在Jenkins宿主服务器上运行如下命令
    $ sudo visudo
  2. 在文件的末尾加上一行
    jenkins ALL=(ALL) NOPASSWD: ALL
  3. 保存文件(注意保存的时候修改文件名,文件名后缀不要加上默认的.tmp,即可覆盖原文件)
    Ctrl+O
  4. 退出编辑
    Ctrl+X
  5. 重启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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值