2013-05-06 4 views
5

ich konfiguriere jenkins gerade und in der Pre-Erstellungsschritte i jenkins neu zu starten versuchen, aber ich am Ende mit dem folgenden Fehler aufJenkins schlägt fehl, während ich meinen SQL-Server neu starte "sudo: no tty present und kein askpass-Programm angegeben Sorry, versuche es noch einmal."

Commencing build of Revision c5b9f8daac092efc5396d80f568a2cf89ae8b697 (origin/HEAD, origin/master) 
Checking out Revision c5b9f8daac092efc5396d80f568a2cf89ae8b697 (origin/HEAD, origin/master) 
No change to record in branch origin/HEAD 
No change to record in branch origin/master 
[webapp] $ /bin/sh -xe /tmp/hudson5215632082686866774.sh 
+ sudo /etc/init.d/mysql restart 
sudo: no tty present and no askpass program specified 
Sorry, try again. 
sudo: no tty present and no askpass program specified 
Sorry, try again. 
sudo: no tty present and no askpass program specified 
Sorry, try again. 
sudo: 3 incorrect password attempts 
Build step 'Execute shell' marked build as failure 
Finished: FAILURE 

ich Jenkins out of nowhere starts failing with sudo: no tty present and no askpass program specified

einige Antworten gegoogelt und sah Aber leider, dass didn ‚t help me

Meine/etc/sudoers sieht aus wie dieses

# 
# 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) NOPASSWD: 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 

Antwort

1

Bitte benutzen Sie die "id" Komma nd und fügen Sie die Ausgabe ein. Nur wenn Sie in der Admin-Gruppe sind, brauchen Sie kein Passwort, aber für alle anderen, obwohl Sie Zugriff haben, aber Sie müssen das Sudo-Passwort eingeben. In diesem Fall muss sudo nicht nach dem Passwort und somit nach dem Fehler fragen.

Eine Lösung könnte sein, verwenden Sie nicht sudo nur für mysql restart, sondern führen Sie das gesamte Skript als sudo "sudo {Ihr Skriptpfad}" in diesem Fall Sudo wird das Terminal nach dem Passwort fragen müssen.

+0

mein id Befehl gibt diese uid = 108 (jenkins) gid = 65534 (nogroup) groups = 65534 (nogroup), 111 (admin) ich den Benutzer jenkins denken wird in Admin-Gruppe so sudo ist nicht die Problem. Wenn du sagst: "In diesem Fall hat sudo kein Passwort, um nach dem Passwort und damit dem Fehler zu fragen." Was genau bedeutet das? Wie füge ich tty hinzu? –

3

Der Fehler "no tty present" zeigt an, dass Sie in Ihrer sudoers-Datei die Einstellung "requirtty" haben. In Ihrem Fall ist es wahrscheinlich in /etc/sudoers.d. Sobald diese Zeile da ist, spielt es keine Rolle, in welcher Gruppe Sie sich befinden - sudo benötigt einen tty, wann immer es ausgeführt wird.

Um dies zu umgehen, müssen Sie entweder die erforderliche Zeile in der Konfigurationsdatei entfernen (oder auskommentieren) oder eine Zeile hinzufügen, um Ihren Benutzer von der Einstellung für "erforderlich" auszuschließen. Sie können sehen, wie das hier tun: Disable requiretty per user

+1

Ich habe dieses Problem und ich habe nicht die Anforderung in entweder/etc/sudoers oder in irgendeiner Datei in /etc/sudoers.d (die nur eine README-Datei mit Kommentaren enthält). – Vince

+1

Der Standardwert requiredtt hängt von der verwendeten Linux-Distribution ab. Fügen Sie die Zeile "Defaults: username! Requiretty" zu Ihrer sudoers-Datei hinzu und ersetzen Sie den Benutzernamen durch den tatsächlichen Benutzernamen. – Barak

+0

Danke @Barak. Das hat es für mich gelöst. Ich benutze Ubuntu und mein 'man sudoers' sagt, dass requirtty standardmäßig deaktiviert ist, aber ich denke, es war nicht, weil ich es explizit deaktiviert habe, wie du es vorgeschlagen hast. – Vince

3

Durch das Hinzufügen der folgenden: Defaults: Benutzername authentifizieren zu/etc/sudoers Sie nicht den Fehler sollte aber dieser Benutzername wird ohne zu fragen, für eine zugänglich sein Kennwort

Verwandte Themen