2011-12-09 194 views
5

我不能在我的ec2客戶端上運行「sudo su」,我通過java程序ssh進入客戶端並通過程序運行命令。 雖然我可以運行諸如「ls」和「ifconfig」之類的命令。在ec2實例上運行sudo命令

我收到一個錯誤,提示「sudo:對不起,您必須有一個tty才能運行sudo」。

我該如何運行命令,我使用jsch作爲ssh到我的ec2實例。

回答

4

看起來像默認情況下Jsch不會爲遠程會話分配一個僞tty - 這可能會破壞一些希望以交互方式運行的程序。它看起來像你可能能夠使用ChannelExec.setPty函數來請求一個pty - 但我沒有與Jsch一起工作,不能自己測試這個。

+0

我會試試! –

+0

它的工作,謝謝你! –

+0

請注意:我爲JSch創建了一些Javadoc,您可能想要鏈接http://epaul.github.com/jsch-documentation/simple.javadoc/com/jcraft/jsch/ChannelExec.html#setPty(boolean) 。 –

6

通過使用sudo-S選項,您可以在沒有僞-tty的情況下使用JSch執行「sudo」。

查看JSch網站上的Sudo.java以獲取完整示例。

(我是JSch的作者)