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

今天使用jenkins job执行调用脚本执行CD task时,出现了“sudo: no tty present and no askpass program specified”的问题,网上找了很多,但大多都没有解决我的问题。

问题描述:

写好shell脚本后,直接在宿主机直接使用"sudo ./product_env.sh"时,脚本可以正常执行,但是在jenkins服务器上,远程调用此机器上的脚本时,会抛出:“sudo: no tty present and no askpass program specified”

解决:

修改sudo配置文件,直接输入命令“visudo”或“sudo visudo”:

## Drivers
# Cmnd_Alias DRIVERS = /sbin/modprobe

# Defaults specification

#
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
#         You have to run "ssh -t hostname sudo <cmd>".
#
#Defaults    requiretty

#
# Refuse to run if unable to disable echo on the tty. This setting should also be
# changed in order to be able to use sudo without a tty. See requiretty above.
#
Defaults   !visiblepw

找到“Defaults   !visiblepw”,直接将当中的“!”去掉(如果是被注释的,就把“#”去掉),如果没有就增加行:Defaults   visiblepw

否则就会出现:sudo: no tty present and no askpass program specified 错误

此外,我们也可以将Defaults requiretty注释或修改为 #Defaults requiretty, 表示不需要控制终端。 

我们也可以赋予当前登录用户(如:user1)执行某项服务的权限,如:

如,增加行:user1 ALL=(ALL) NOPASSWD: /etc/nginx/sbin
注:NOPASSWD可以使在命令执行时不需要交互输入user1用户的密码, 修改后重启服务生效

Refer to: https://www.cnblogs.com/cyberwalker/p/3604145.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值