Java - Jsch sudo command.
I am using Jsch and my task is to login to server and run command as following
sudo su - bumboo
Using following code i am successfully able to connect but when i try to run command it gives me error sudo: sorry, you must have a tty to run sudo
Following is my code
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 in sudo.java available example they advised to use
// 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);
but when i run command like "sudo -S -p - su bamboo"
still gives me the same error
any help appreciated.