Execute um comando shell do linux com “sudo” usando java, sem digitar a senha requerida

Oi eu estou usando biblioteca java ganymed-ssh2 para executar comandos remotos na estação de trabalho linux com sucesso.

Mas agora existe uma situação em que preciso executar um comando mas isso requer que eu coloque alguma senha … como:

sudo /usr/bin/some_process please enter your password: 

Eu costumava implementar a execução remota do cmd desta maneira:

 Session sess = conn.openSession(); sess.execCommand("uname -a && date && uptime && who"); System.out.println("Here is some information about the remote host:"); InputStream stdout = new StreamGobbler(sess.getStdout()); BufferedReader br = new BufferedReader(new InputStreamReader(stdout)); while (true) { String line = br.readLine(); if (line == null) break; System.out.println(line); } System.out.println("ExitCode: " + sess.getExitStatus()); sess.close(); conn.close(); 

Eu tenho medo que não seja possível executar comandos que exijam uma senha com essa biblioteca.

Alguém poderia me dar uma solução ou alternativa para permitir isso ???

THX!

assumindo que existe um sess.getStdin() , você deve ser capaz de sess.getStdin() uma senha para o comando sudo.

A solução mais fácil seria fornecer ao usuário que o programa Java efetua login como a capacidade de executar esse comando sudo sem digitar a senha. Você pode fazer isso executando visudo no host e digitando NOPASSWD após o comando especificado. Veja man 8 visudo para mais detalhes.

O mais fácil é usar a autenticação de chave pública . Dessa forma, você não precisa de uma senha.

Edit: Eu estava enganado que esta questão era sobre SSH, quando na verdade é sobre sudo. Nesse caso, a solução do kojiro é a correta: edite o arquivo /etc/sudoers , use o flag NOPASSWD .