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();