7
Java - Jsch sudoコマンド。私はJSCHを使用していますし、私の仕事は、サーバーにログインし、次のコードを使用してJSCH sudo suコマンド "tty"エラー
sudo su - bumboo
を、次のようなコマンドを実行することです、私は正常に接続できていますが、私は、コマンドを実行しようとすると、それは私にエラーsudo: sorry, you must have a tty to run sudo
彼らは
0を使用することをお勧めsudo.java可能な例では私のコードであるpublic static Channel sudoBamboo(Session session, String sudo_pass) throws Exception {
ChannelExec channel = (ChannelExec) session.openChannel("exec");
//SUDO to bamboo user
String command = "sudo su - bumboo";
channel.setCommand(command);
//InputStream in = channel.getInputStream();
channel.setInputStream(null, true);
OutputStream out = channel.getOutputStream();
//channel.setErrStream(System.err);
channel.setOutputStream(System.out, true);
channel.setExtOutputStream(System.err, true);
//Test change
//channel.setPty(false);
channel.connect();
out.write((sudo_pass + "\n").getBytes());
out.flush();
return channel;
}
JSCH後
// man sudo
// -S The -S (stdin) option causes sudo to read the password from the
// standard input instead of the terminal device.
// -p The -p (prompt) option allows you to override the default
// password prompt and use a custom one.
((ChannelExec)channel).setCommand("sudo -S -p '' "+command);
が、私は"sudo -S -p - su bamboo"
のようなコマンドを実行すると、まだ私に任意のヘルプは感謝
同じエラーを与えます。