How to solve "sudo: no tty present and no askpass program specified" when trying to run a shell from Jenkins
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
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 :) |
FYI - kann Ihnen bei Ihrer Suche helfen - Beachten Sie, dass Sie den SAME-Fehler in einfachem SSH erhalten, wenn Sie einen SSH-Befehl in einen anderen einbetten, z.
localhost $ ssh -C 'sudo su - anderer Benutzer ssh / run / this / executable'
(Warum nicht SSH direkt auf die Zielbox übertragen? Vielleicht werden SSH-Schlüssel nur zwischen Host1 und Host2 eingerichtet, oder das Netzwerk wird so geroutet, dass der Zugriff auf Host2 ohne Weiterleitung über Host1 verhindert wird. Vielleicht dürfen Sie keine Sudoer oder andere berühren andere Datei auf Host2 ... häufig in Produktionsumgebungen.).
In jedem Fall können Sie Nicht-Sudo-Befehle mit den oben genannten Befehlen ausführen. Das Präfixieren mit sudo führt jedoch zu "no tty present".
Wie behebt man das mit dem Befehl bare ssh? Geben Sie das -t ein, z. B .: localhost $ ssh -C 'sudo su - ein anderer Benutzer ssh -t / run / this / executable'
Nun läuft der Remote Sudo einwandfrei innerhalb von SSH, keine Beschwerden über tty. Der -t hat es zugeteilt.
Die Frage ist also, wie man die Option "-t" im Paramiko-Objekt emuliert. Da ist deine Antwort.
Dieser Blog versucht es zu erklären, hätte aber möglicherweise mehr Zeit für das 'sudo'-Beispiel aufwenden können: //jessenoller.com/2009/02/05/ssh-programming-with-paramiko-completely-different/
(Entschuldigung für meinen Hinweis in die richtige Richtung anstelle einer perfekten Antwort ... Ich suche selbst noch nach diesen Informationen).
- #1
Hallo,
ich habe gestern ein apt-get update durchgeführt. Dabei war leider die Festplatte voll und einiges ist schief gegangen.
Ich habe mittlerweile -denke ich- alles wieder korrigiert. Nur XBMC kann ich aus dem Menü nicht starten:
Ich habe die menuorg.xml dann entsprechend angepasst und logge den Output in eine Datei:- /usr/share/vdr/menuorg-appswitcher standalone=yes app=xbmc &> /var/log/xbmc_starter.log
Darin steht dann:
- sudo: Kein TTY vorhanden und kein »askpass«-Programm angegeben
- Sorry, try again.
- sudo: 3 Fehlversuche bei der Passwort-Eingabe
Kann mir jemand helfen?
Eigentlich sollte ja nicht nach einem Passwort gefragt werden... Die Sudoers:
- #
- # This file MUST be edited with the 'visudo' command as root.
- #
- # Please consider adding local content in /etc/sudoers.d/ instead of
- # directly modifying this file.
- #
- # See the man page for details on how to write a sudoers file.
- #
- Defaults env_reset
- Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
- # Host alias specification
- # User alias specification
- # Cmnd alias specification
- # User privilege specification
- root ALL=(ALL:ALL) ALL
- # Members of the admin group may gain root privileges
- %admin ALL=(ALL) ALL
- # Allow members of group sudo to execute any command
- %sudo ALL=(ALL:ALL) ALL
- # See sudoers(5) for more information on "#include" directives:
- #includedir /etc/sudoers.d
- # Added by yavdr-startup, don't remove
- vdr ALL=NOPASSWD: /usr/bin/start-xterm
- vdr ALL=NOPASSWD: /sbin/reboot
- vdr ALL=NOPASSWD: /usr/bin/xbmc
Alles anzeigen
Wobei ich die letzte Zeile testweise hinzugefügt habe.
Hat jemand eine Idee?Gruß,
Hendrik- #2
Dabei war leider die Festplatte voll und einiges ist schief gegangen.
Fein. Dann nimm einen Live System und schmeiß ein paar Sachen raus, was das System nicht braucht. Wenn Du dann Terminal hast, kannst Du mit Kernel-Leichen und die zugehörigen Header weiter machen. Update erst, wenn Platz da ist.Eigentlich sollte ja nicht nach einem Passwort gefragt werden
Vielleicht fehlt menuorg-appswitcher bei "NOPASSWD". Oder einfach:- vdr ALL=NOPASSWD: ALL
Albert- #3
Hallo Albert,
danke für deine Antwort.
Aufgeräumt und apt-get install noch einmal ausgeführt -bis keine Fehlermeldung mehr- habe ich.
Einige Setup-Dateien vom VDR waren auch futsch und sind aus dem Backup zurück. Die sudoers habe ich allerdings nicht gesichert gehabt.Deinen Tipp werde ich ausprobieren. Danke.
Hat jemand mal die originale sudoers von yavdr für mich?
Gruß,
Hendrik-
- #4
Hat jemand mal die originale sudoers von yavdr für mich?
Wenn Du bis heute Abend wartest, ja oder jemand postet sie eher. Wenn aber der User VDR den appswitcher ausführt und als Ausnahme für alle Apps mit NOPASSWD in der sudoers steht, dann müsste es doch logischerweise gehen. Eine „riesige“ Sicherheitslücke sehe ich da nicht, wenn es nur vorübergehend eingetragen wird.Albert
- #5
Hat jemand mal die originale sudoers von yavdr für mich?
Hier sind meine beiden.
Albert- #6
Danke!
Die zweite war's. (vorsicht: Ich glaube, vor dem * sollte kein Leerzeichen sein).
Gruß,
Hendrik- #7
Ich glaube, vor dem * sollte kein Leerzeichen sein
Doch, das passt schon. Das Sternchen steht für das ganze Options, Commands, Args, ... für das initctl - init daemon control tool, deswegen mit Leerzeichen getrennt.Albert