Executando o comando após o login do sudo

Estou tentando executar o código abaixo para executar comandos do sudo mas não sei como executar comandos após o login do sudo

 String[] commands = {"sudo su - myname;","id"}; JSch jsch = new JSch(); String username = "myuser"; com.jcraft.jsch.Session session = jsch.getSession(username,"hostname", 22); session.setPassword("my@123"); session.connect(); Channel channel=session.openChannel("exec"); for(int a=0;a0){ int i=in.read(tmp, 0, 1024); if(i<0)break; System.out.print(new String(tmp, 0, i)); } if(channel.isClosed()){ System.out.println("exit-status: "+channel.getExitStatus()); break; } } } 

O sudo su executa um novo shell.

Para fornecer um comando para o shell, você:

  • especifique o comando na linha de comando su , como mostra o exemplo oficial do JSch Sudo.java :

     ((ChannelExec)channel).setCommand("sudo -S -p '' "+command); 
  • ou alimente o comando ao shell usando sua input padrão, ou seja, da mesma maneira que você fornece a senha:

     out.write(("command\n").getBytes()); 

    Consulte também Executando vários comandos bash usando um programa Java JSch após o login sudo .

Em geral, recomendo a primeira abordagem, pois ela usa uma API melhor definida (argumento de linha de comando).

    Intereting Posts