Error in command "sudo su"

Java is the Jsch sudo team.

I use Jsch, and my task is to log in to the server and run the command as shown below.

sudo su - bumboo 

Using the following code, I can successfully connect, but when I try to run the command, it gives me a sudo: sorry, you must have a tty to run sudo error sudo: sorry, you must have a tty to run sudo

Below 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 the available sudo.java example they advise using

 // 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 a command like "sudo -S -p - su bamboo" , it still gives me the same error

any help appreciated.

+10
source share
2 answers

It worked for me

 String command = "sudo su - bumboo"; channel.setPty(true); 
+11
source

It worked for me too. Thanks!

0
source

All Articles