我想从Jsch切换到Apache Mina,以查询远程Linux主机并完成一些任务。 我需要实现诸如列出远程主机的文件,更改目录,获取文件内容,将文件放入远程主机之类的事情,
我能够使用session.executeRemoteCommand()成功连接并执行一些shell命令。
public byte[] getRemoteFileContent(String argDirectory, String fileName)
throws SftpException, IOException {
ByteArrayOutputStream stdout = new ByteArrayOutputStream();
StringBuilder cmdBuilder = new StringBuilder("cat" + SPACE + remoteHomeDirectory);
cmdBuilder.append(argDirectory);
cmdBuilder.append(fileName);
_session.executeRemoteCommand(cmdBuilder.toString(), stdout, null, null);
return stdout.toByteArray();
}
public void connect()
throws IOException {
_client = SshClient.setUpDefaultClient();
_client.start();
ConnectFuture connectFuture = _client.connect(_username, _host, portNumber);
connectFuture.await();
_session = connectFuture.getSession();
shellChannel = _session.createShellChannel();
_session.addPasswordIdentity(_password);
// TODO : fix timeout
_session.auth().verify(Integer.MAX_VALUE);
_channel.waitFor(ccEvents, 200);
}
我有以下问题,
答案 0 :(得分:0)
我需要sshd-sftp及其API才能进行文件传输。 下面的代码获取正确的API, sftpClient = SftpClientFactory.instance()。createSftpClient(clientSession); 在sftpClinet上,我调用了read()和write()方法来完成任务。这完全可以回答我的问题。