1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

[sshj2] Enviando senha para o terminal ssh.

Bom dia, estou com um problema na minha aplicação pois em determinado momento quando vou alterar de usuário dentro da sessão é solicitada a senha, quando passo a senha o terminal não reconhece a string e fica como se eu tivesse digitado a senha errada, segue um trecho do código e em seguida a saída gerada.

import ch.ethz.ssh2.ChannelCondition; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.Session; import ch.ethz.ssh2.StreamGobbler; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter;

public class Test4 {

public static void main (String args []) throws InterruptedException { Test4(); }

public static void Test4() throws InterruptedException{try { / Create a connection instance / Connection conn = new Connection("ubuntu");

/ Now connect / conn.connect (); / Authenticate / boolean isAuthenticated = conn.authenticateWithPassword("teste", "teste"); if (isAuthenticated == false) throw new IOException ("Falha na autenticação. Usuário ou senha inválidos."); / Create a session / Session sess = conn.openSession ();

System.out.println("Começando a execução do comando.");

sess.requestPTY("bash",20000,25000,1920,1080,null);

sess.startShell(); Thread.sleep(1000);

InputStream stdout = new StreamGobbler (sess.getStdout()); InputStream stderr = new StreamGobbler (sess.getStderr());

BufferedReader stdoutReader = new BufferedReader (new InputStreamReader(stdout)); BufferedReader stderrReader = new BufferedReader (new InputStreamReader(stderr));

// We used PrintWriter, it makes things simple PrintWriter out = new PrintWriter (sess.getStdin ()); out.println("bash"); out.flush(); Thread.sleep(1000);

out.println("su - jboss -c \"mv teste.ear teste.ear_\""); out.flush(); Thread.sleep(1000);

out.println("teste01"); //out.println("echo 'ReturnCode:'$?"); out.flush();

Thread.sleep(2000);

out.println("exit"); out.flush();

out.close (); sess.close(); sess.waitForCondition (ChannelCondition.CLOSED | ChannelCondition.EOF | ChannelCondition.EXIT_STATUS, 30000); //sess.waitForCondition (ChannelCondition.EOF, 10000);

System.out.println ("Aqui está a saída do sistema:");

while (true) {

String line = stdoutReader.readLine(); if (line == null) break; System.out.println(line);

} System.out.println ("Saída do erro:"); while (true) { String line = stderrReader.readLine (); if (line == null) break; System.out.println (line); } / Show exit status, if available (otherwise "null") / System.out.println ("ExitCode:" + sess.getExitStatus ());

sess.close();/ Close this session / conn.close();/ Close the connection /

} catch (IOException e) { e.printStackTrace (System.err); System.exit (2); } }

}

Saída----------------------------------------

Começando a execução do comando. Aqui está a saída do sistema: Last login: Wed Dec 9 11:17:16 2015 from 10.208.26.148

[teste@ubuntu ~]$ bash [teste@ubuntu ~]$ [teste@ubuntu ~]$ su - jboss -c "mv teste.ear teste.ear_" Password: su: incorrect password [teste@ubuntu ~]$ [teste@ubuntu ~]$ Saída do erro: ExitCode:null

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags ssh ou faça a sua própria pergunta.