0

我正在创建一个在 ssh上做很多事情的 java 程序。

在我的程序中,我需要能够在远程主机上运行诸如“listFiles()”之类的方法。我还需要能够从 Apache Commons io 运行几个命令(我正在使用“FileUtils”类)。我见过诸如 JSch 之类的程序,但在文件操作和传输方面,它们都没有足够的灵活性。

谁能建议我的问题的替代程序或方法?

4

1 回答 1

0

相反,JSch 确实支持文件传输:http ://www.jcraft.com/jsch/examples/ScpTo.java.html

至于列出远程主机上的文件,您不能只使用 Apache Commons FileUtils 在那里运行 java 命令。您需要做的是在远程操作系统上远程执行命令——相当于通过命令行 ssh 执行此操作:

ssh remotehost ls /path/to/remote/dir

这对于您选择的任何 ssh 库都是如此,而不仅仅是 JSch。

所以,就 JSch 而言,这将是(假设您已经设置并连接了一个 Jsch ssh 会话):

ChannelExec channel= (ChannelExec) session.openChannel("exec");
channel.setCommand("ls /path/to/remote/dir");
InputStream in=channel.getInputStream();
channel.connect()
// read your ls-output from the input stream here
channel.disconnect()
于 2013-11-14T01:09:39.127 回答