通过SSH的Java文件命令

时间:2013-11-12 13:43:21

标签: java ssh jsch apache-commons-io

我正在创建一个java程序,它通过ssh执行很多

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

有人可以提出替代方案或方法来解决我的问题吗?

1 个答案:

答案 0 :(得分: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()