2013-05-06 13 views
5

ho appena configurato Jenkins e nel pre-compilazione passi che sto cercando di riavviare Jenkins, ma io alla fine con il seguente errorejenkins non riesce mentre si riavvia il mio sql "sudo: nessun tty presente e nessun programma askpass specificato Spiacente, riprovare."

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 

Ho cercato su google e ho visto alcune risposte a Jenkins out of nowhere starts failing with sudo: no tty present and no askpass program specified

Ma purtroppo che didn 't aiutarmi

mio/etc/sudoers assomiglia a questo

# 
# 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 

risposta

1

Si prega di utilizzare la virgola "id" nd e incolla l'output. Solo se si è nel gruppo admin, non è necessaria la password ma per tutti gli altri anche se si ha accesso ma è necessario digitare la password sudo. In questo caso, sudo non ha un tty per chiedere la password e quindi l'errore.

Una soluzione potrebbe essere, non utilizzare sudo solo per mysql restart, invece eseguire l'intero script come sudo "sudo {il percorso di script}" in questo caso sudo avrà il terminale per chiedere la password.

+0

miei comando restituisce ID questa uid = 108 (Jenkins) gid = 65534 (nogroup) gruppi = 65534 (nogroup), 111 (admin) penso che la Jenkins utente è in gruppo admin quindi sudo non è il problema. Quando dici "In questo caso, sudo non ha un tty per chiedere la password e quindi l'errore" cosa significa esattamente? Come aggiungo tty? –

3

L'errore "non presente tty" indica che si dispone dell'impostazione "requiretty" nel file sudoers. Nel tuo caso, è probabilmente in /etc/sudoers.d. Una volta che questa linea è lì, non importa in quale gruppo ci si trova - sudo richiederà un tty ogni volta che viene eseguito.

Per aggirare questo problema, è necessario rimuovere (o commentare) la riga richiesta nel file di configurazione oppure aggiungere una riga per escludere l'utente dall'impostazione requiretty. Si può vedere come fare qui: Disable requiretty per user

+1

Ho riscontrato questo problema e non ho l'impostazione requiretty in/etc/sudoers o in qualsiasi file in /etc/sudoers.d (che contiene solo un file README con commenti). – Vince

+1

Il valore predefinito del requiretty dipende dalla distro di linux che si sta utilizzando. Aggiungi la riga "Defaults: username! Requiretty" al tuo file sudoers e sostituisci il nome utente con il nome utente effettivo. – Barak

+0

Grazie a @Barak. Questo l'ha risolto per me. Sto usando Ubuntu e il mio 'uomo sudoers' dice che requiretty è disattivato per impostazione predefinita, ma suppongo che non fosse perché disabilitato esplicitamente come tu mi hai suggerito di aggiustarlo. – Vince

3

aggiungendo le seguenti: predefiniti: nome utente autenticazione al file/etc/sudoers non si dovrebbe ottenere l'errore, ma questo nome utente sarà accessibile senza chiedere un Password

Problemi correlati