gpt4 book ai didi

java - 如何使用 JSch ssh 到 ZXA10 C320 设备

转载 作者:行者123 更新时间:2023-11-30 05:37:09 25 4
gpt4 key购买 nike

我正在开发一个 Java 应用程序,用于通过 ssh 连接到 zxa10 c320 设备。我使用 jsch 库进行 ssh。但是当我运行应用程序时,它会保留在第一个 while 循环中,而不返回任何输出。当我通过 ssh 指向其他一些 Linux 服务器来运行此应用程序时,它可以正常工作。

如果我做错了什么,请告诉我。

我在“exec”和“shell”模式下尝试了这个。

此外,我尝试使用 sshj 库来执行此操作。也没有成功。

public class RunCommand {

public String runCommand(String command) {
String host = "XX.XX.X.XX";
String user = "user";
String password = "password";
String result = "";

try{
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();

// Create a JSch session to connect to the server
Session session = jsch.getSession(user, host, 22);
session.setPassword(password);
session.setConfig(config);

// Establish the connection
session.connect();

if(session.isConnected()) {
System.out.println("Connected...");
}

ChannelExec channel = (ChannelExec) session.openChannel("exec");

channel.setCommand("pwd");

int stat = channel.getExitStatus();

StringBuilder outputBuffer = new StringBuilder();
StringBuilder errorBuffer = new StringBuilder();

InputStream in = channel.getInputStream();
InputStream err = channel.getExtInputStream();

channel.setPty(true);
channel.connect();

System.out.println("Channel Connected");
System.out.println("channel.isConnected() "+channel.isConnected());
System.out.println("channel.isClosed() "+channel.isClosed());


byte[] tmp = new byte[1024];
while (true) {
while (in.available() > 0) {
int i = in.read(tmp, 0, 1024);
if (i < 0) break;
outputBuffer.append(new String(tmp, 0, i));
}
while (err.available() > 0) {
int i = err.read(tmp, 0, 1024);
if (i < 0) break;
errorBuffer.append(new String(tmp, 0, i));
}
if (channel.isClosed()) {
if ((in.available() > 0) || (err.available() > 0)) continue;
System.out.println("exit-status: " + channel.getExitStatus());
break;
}
try {
Thread.sleep(1000);
} catch (Exception ee) {
}
}

System.out.println("output: " + outputBuffer.toString());
System.out.println("error: " + errorBuffer.toString());
channel.disconnect();
session.disconnect();
System.out.println("Channel And Session Closed!!!");
}catch(JSchException e){
e.printStackTrace();
result = "Auth fail";
}catch(Exception e){
e.printStackTrace();
}
return result;
}
}

最佳答案

我无法使用 peo java 来做到这一点。但我能够使用 python 的 paramiko 模块做到这一点。我所做的是我编写了两个应用程序,一个使用java,一个使用python,然后我从java应用程序调用python应用程序,并通过python应用程序调用ssh到gpon。

关于java - 如何使用 JSch ssh 到 ZXA10 C320 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56360010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com