2011-12-09 17 views
5

No puedo ejecutar "sudo su" en mi cliente ec2, me meto en el cliente a través de un programa java y ejecuto el comando a través de un programa. Puedo ejecutar comandos como "ls" y "ifconfig".Para ejecutar comandos sudo en una instancia de ec2

Me sale un error que dice "sudo: lo siento, debes tener un tty para ejecutar sudo".

Cómo puedo ejecutar el comando, estoy usando Jsch para ssh en mi instancia de ec2.

Respuesta

4

Parece que, de forma predeterminada, Jsch no asigna un pseudo-tty para la sesión remota; esto puede interrumpir algunos programas que esperan ejecutarse de forma interactiva. Parece que puede usar la función ChannelExec.setPty para solicitar una pty, pero no he trabajado con Jsch y no puedo probarlo yo mismo.

+0

¡Intentaré eso! –

+0

¡funcionó, gracias! –

+0

Solo una nota: he creado algunos Javadocs para JSch, es posible que desee vincular http://epaul.github.com/jsch-documentation/simple.javadoc/com/jcraft/jsch/ChannelExec.html#setPty(boolean) en su lugar . –

6

Puede hacer "sudo" sin pseudo-tty con JSch, utilizando la opción -S a sudo.

Consulte el Sudo.java en el sitio web de JSch para obtener un ejemplo completo.

(soy el autor de JSch.)

Cuestiones relacionadas