我在远程Ubuntu服务器上有一个脚本。我在jenkins构建成功后尝试执行脚本,但错误说的是这样:
sudo: no tty present and no askpass program specified
配置如下,
任何人都可以帮助我吗? 谢谢。
答案 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.