我正在尝试使用 SSH 协议从服务器读取数据。为此,我正在使用 j2ssh 库。我的服务器在 ssh 中与另一台服务器连接没有任何问题。问题是当我尝试从 shell 命令行读取任何数据时。无论我向程序“ read = in.read(buffer) ”发送什么“命令”,都不会得到任何数据,我尝试使用“ ls ”和“ cat filename.txt ”和其他命令。
只有一个命令可以正常工作,并且是“ tail -f filename.txt ”。使用这个命令,我可以看到缓冲区不是空的,它包含文件的文本,但是 tail 命令没有关闭并且在监听时,循环发送程序。
谁能帮我知道为什么我无法从其他命令中获取任何数据?
这是我的代码:
private String exec(String cmd) throws SSHHandlerException {
String result = null;
session = ssh.openSessionChannel();
if(session.startShell())
{
session.getOutputStream().write((cmd+"\n").getBytes());
session.getOutputStream().close();
result = read(session,log);
}
session.close();
ssh.disconnect();
return result;
}
private static String read(SessionChannelClient session, ProcessLogger log) throws Exception{
byte buffer[] = new byte[255];
int read;
StringBuffer out=new StringBuffer();
InputStream in = session.getInputStream();
while((read = in.read(buffer)) > 0) {
out.append(new String(buffer, 0, read));
}
return out.toString();
}