通过Jenkins运行命令?

时间:2014-06-30 04:18:01

标签: bash ubuntu jenkins

我在远程Ubuntu服务器上有一个脚本。我在jenkins构建成功后尝试执行脚本,但错误说的是这样:

sudo: no tty present and no askpass program specified

配置如下, enter image description here

任何人都可以帮助我吗? 谢谢。

2 个答案:

答案 0 :(得分:2)

问题是您的脚本在某些时候使用sudo。通常的方法是添加要求您使用sudo到sudoers的脚本。

示例:在您的脚本中使用sudo service apache2 reload,现在创建一个包含该行的bash脚本,并将该脚本添加到sudoers文件中。

新脚本名称:/home/quaser/restart-apache.sh

使用:visudo

在文件底部添加:

jenkins ALL=(ALL) NOPASSWD: /home/quaser/restart-apache.sh

现在,在您的脚本中将sudo service apache restart更改为sudo /home/quaser/restart-apache.sh,不应要求您输入密码。

答案 1 :(得分:2)

我遇到了同样的问题,我在Defaults requiretty

上发表/etc/sudoers评论解决了这个问题
cat /etc/sudoers| grep tty
#Defaults    requiretty

从手册页:

 man sudoers | grep requiretty  -A 5
       requiretty      If set, sudo will only run when the user is logged in
                       to a real tty.  When this flag is set, sudo can only be
                       run from a login session and not via other means such
                       as cron(8) or cgi-bin scripts.  This flag is off by
                       default.