为了账号安全,请及时绑定邮箱和手机立即绑定

为使用JSch通过SSH执行的命令提供输入/子命令

为使用JSch通过SSH执行的命令提供输入/子命令

繁花如伊 2020-02-02 15:08:00
我正在尝试使用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();


查看完整回答
反对 回复 2020-02-02
  • 1 回答
  • 0 关注
  • 612 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信