我正在创建一个在 ssh上做很多事情的 java 程序。
在我的程序中,我需要能够在远程主机上运行诸如“listFiles()”之类的方法。我还需要能够从 Apache Commons io 运行几个命令(我正在使用“FileUtils”类)。我见过诸如 JSch 之类的程序,但在文件操作和传输方面,它们都没有足够的灵活性。
谁能建议我的问题的替代程序或方法?
我正在创建一个在 ssh上做很多事情的 java 程序。
在我的程序中,我需要能够在远程主机上运行诸如“listFiles()”之类的方法。我还需要能够从 Apache Commons io 运行几个命令(我正在使用“FileUtils”类)。我见过诸如 JSch 之类的程序,但在文件操作和传输方面,它们都没有足够的灵活性。
谁能建议我的问题的替代程序或方法?
相反,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()