from example conexion con java ssh router jsch cisco

java - example - ssh 2.0 jsch 0.1 54



Proporcionando entradas/subcomandos al comando ejecutado sobre SSH con JSch (1)

Estoy tratando de administrar el enrutador a través de la aplicación Java usando la biblioteca Jcraft Jsch.

Estoy tratando de enviar Router Config a través del servidor TFTP. El problema está en mi código Java porque esto funciona con PuTTY.

Este es mi código Java:

int port=22; String name ="R1"; String ip ="192.168.18.100"; String password ="root"; JSch jsch = new JSch(); Session session = jsch.getSession(name, ip, port); session.setPassword(password); session.setConfig("StrictHostKeyChecking", "no"); System.out.println("Establishing Connection..."); session.connect(); System.out.println("Connection established."); ChannelExec channelExec = (ChannelExec)session.openChannel("exec"); InputStream in = channelExec.getInputStream(); channelExec.setCommand("enable"); channelExec.setCommand("copy run tftp : "); //Setting the ip of TFTP server channelExec.setCommand("192.168.50.1 : "); // Setting the name of file channelExec.setCommand("Config.txt "); channelExec.connect(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); String line; int index = 0; StringBuilder sb = new StringBuilder(); while ((line = reader.readLine()) != null) { System.out.println(line); } session.disconnect();

yo obtengo

La línea tiene un comando automático no válido ''192.168.50.1''

El problema es cómo puedo ejecutar esos comandos sucesivos.


Llamar a ChannelExec.setCommand varias veces no tiene ningún efecto.

E incluso si lo hubiera hecho, supongo que 192.168.50.1 : y Config.txt no son comandos, sino que las entradas a la copy run tftp : command, ¿no?

Si ese es el caso, debe escribirlos en la entrada del comando.

Algo como esto:

ChannelExec channel = (ChannelExec) session.openChannel("exec"); channelExec.setCommand("copy run tftp : "); OutputStream out = channelExec.getOutputStream(); channelExec.connect(); out.write(("192.168.50.1 : /n").getBytes()); out.write(("Config.txt /n").getBytes()); out.flush();