Skip to content

Instantly share code, notes, and snippets.

@imranity
Created February 13, 2015 22:38
Show Gist options
  • Save imranity/9246dd195f785cf4783d to your computer and use it in GitHub Desktop.
Save imranity/9246dd195f785cf4783d to your computer and use it in GitHub Desktop.
How to solve "sudo: no tty present and no askpass program specified" when trying to run a shell from Jenkins
Running shell scripts that have contain sudo commands in them from jenkins might not run as expected. To fix this, follow along
Simple steps:
1. On ubuntu based systems, run " $ sudo visudo "
2. this will open /etc/sudoers file.
3. If your jenkins user is already in that file, then modify to look like this:
jenkins ALL=(ALL) NOPASSWD: ALL
4. save the file by doing Ctrl+O (dont save in tmp file. save in /etc/sudoers, confirm overwrite)
5. Exit by doing Ctrl+X
6. Relaunch your jenkins job
7. you shouldnt see that error message again :)
@BBrown4
Copy link

BBrown4 commented Apr 5, 2020

Thanks so much!

@imneonizer
Copy link

In response to the question asked here:
https://stackoverflow.com/questions/25189348/unable-to-provide-password-to-a-process-with-subprocess-python

On linux you can bypass sudo prompt using:

echo <password> | sudo -S whoami

Pass the formatted command to subprocess and you are good to go:

import subprocess as sp

cmd = "whoami"
password= "<password>"

stdout, stderr = sp.Popen("echo {} | sudo -S {}".format(password, cmd), shell=True, stdout=sp.PIPE, stderr=sp.PIPE).communicate()

print(stdout.decode())

if stderr:
    print("error occured:")
    print(stderr.decode())

It should print root as command is executed by sudo user.

@hareeshgundam
Copy link

thanks....

@vyrusonline
Copy link

thank u sooo much dude ! u helped me a lot . Thanks again

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment