2011-12-09 9 views
5

Non riesco a eseguire "sudo su" sul mio client ec2, eseguo l'ssh nel client tramite un programma java ed eseguo il comando attraverso un programma. Posso eseguire comandi come "ls" e "ifconfig".Per eseguire comandi sudo su un'istanza ec2

Viene visualizzato un messaggio di errore "sudo: mi dispiace, è necessario un tty per eseguire sudo".

Come posso eseguire il comando, sto usando Jsch per ssh alla mia istanza ec2.

risposta

4

Sembra che per impostazione predefinita Jsch non allochi uno pseudo-tty per la sessione remota: ciò può interrompere alcuni programmi che si prevede di essere eseguiti in modo interattivo. Sembra che potresti essere in grado di utilizzare la funzione ChannelExec.setPty per richiedere una pty, ma non ho lavorato con Jsch e non posso testarlo da solo.

+0

Ci proverò! –

+0

ha funzionato, grazie !! –

+0

Solo una nota: ho creato alcuni Javadoc per JSch, potresti voler collegare http://epaul.github.com/jsch-documentation/simple.javadoc/com/jcraft/jsch/ChannelExec.html#setPty(boolean) invece . –

6

Si può fare "sudo" senza pseudo-TTY con JSch, utilizzando l'opzione -S-sudo.

Vedere il Sudo.java sul sito Web JSch per un esempio completo.

(Sono l'autore di JSch.)