我正在尝试使用Jcraft Jsch库通过Java应用程序管理路由器。我正在尝试通过TFTP服务器发送路由器配置。问题出在我的Java代码中,因为它可以与PuTTY一起使用。这是我的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 filechannelExec.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();我懂了该行具有无效的自动命令“ 192.168.50.1”问题是我该如何运行那些连续的命令。
1 回答
慕哥9229398
TA贡献1877条经验 获得超6个赞
ChannelExec.setCommand多次呼叫无效。
即使有,我也会猜到192.168.50.1 :和Config.txt不是命令,而是命令的输入copy run tftp :,不是吗?
如果是这种情况,则需要将它们写入命令输入中。
像这样:
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();
添加回答
举报
0/150
提交
取消