Skip to content

Instantly share code, notes, and snippets.

Created February 13, 2015 22:38
Show Gist options
  • Save hayderimran7/9246dd195f785cf4783d to your computer and use it in GitHub Desktop.
Save hayderimran7/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:
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 :)
Copy link

  • sudo python /home/engineqa/Desktop/LinuxAutomation/
    sudo: no tty present and no askpass program specified
    Build step 'Execute shell' marked build as failure
    Finished: FAILURE

Showing error like that

Can resolve this error. When you run Jenkins build user will be Jenkins so just run command sudo vim /etc/sudoers and mention %jenkins ALL=(ALL) NOPASSWD:ALL and save.

Hope this will work for you :)

Copy link

Thanks it's working... 👍

Copy link

Thanks it's running ... 💯

Copy link

Hi, i am running a jmeter script from jenkins aws box.I need to write a report file to jmeter folder.It is pulling issue file not found exception.Even though i gave all access .

Copy link


Copy link

BBrown4 commented Apr 5, 2020

Thanks so much!

Copy link

In response to the question asked here:

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()


if stderr:
    print("error occured:")

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

Copy link


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