Tag: sftp

使用Java查找SFTP最旧文件的文件大小和上次修改

我正在使用JSch从SFTP服务器获取文件,但我试图找到一种方法来只获取最旧的文件,并确保它当前没有被写入。 我想象自己这样做的方法是首先找到指定的远程文件夹中的哪个文件是最旧的。 然后我会检查文件大小,等待x秒(可能大约10秒,只是为了安全),然后再次检查。 如果文件大小没有改变,我下载文件并进行处理。 但是,我不知道该怎么做! 如果有人知道如何做到这一点,或者知道其他支持具有此内置function的SFTP(我知道Apache Commons,但只有FTPS),我们将不胜感激。 提前致谢。

JSch 0.1.53 session.connect()抛出“IO流读取结束”

我下载了一个新的JSch 0.1.53库,并且JSch(sftp)下载任务不再有效。 此发布失败, session.connect()函数抛出错误Session.connect: java.io.IOException: End of IO Stream Read 。 我的旧jsch.jar(2011-10-06)对同一主机工作正常,也许我错过了一个新的配置道具? Session session=null; ChannelSftp channel=null; try { JSch.setLogger(SSHUtil.createJschLogger()); JSch jsch=new JSch(); session=jsch.getSession(“myuser”, “11.22.33.44”, 22); session.setConfig(“StrictHostKeyChecking”, “no”); session.setPassword(“mypwd”); session.connect(2000); // <– FAILS HERE channel = (ChannelSftp)session.openChannel("sftp"); channel.connect(2000); … 这是一个广泛的JSch日志记录,表明正在进行什么。 INFO : Connecting to 11.22.33.44 port 22 INFO : Connection established INFO : Remote version string: […]

如何在Apache Mina sshd-core版本0.14.0中覆盖getVirtualUserDir()

我使用Apache Mina sshd-core版本0.10.0。由于文件上传的一些问题我不得不将版本更改为0.14.0。在那里我无法覆盖getVirtualUserDir()方法。 以下是我的示例代码, sshd.setFileSystemFactory(new NativeFileSystemFactory() { @Override public FileSystemView createFileSystemView(final Session session) { return new NativeFileSystemView(session.getUsername(), false) { @Override public String getVirtualUserDir() { return “C:/root”; } }; }; }); 我想知道如何在Apache Mina sshd-core版本0.14.0中克服这个问题。 谢谢。

如何在Java中使用Apache Mina Sshd Server设置根目录

我使用Apache Mina Sshd API在java中启动本地SFTP服务器。在SFTP客户端我使用Jcraft jsch API创建我的SFTP客户端。我成功启动了服务器。问题是我想写一些unit testing用例到检查客户端是否可以将某些文件放入服务器的根目录。 目前我的SFTP服务器没有任何根目录。所以我想知道是否有任何方法来设置服务器的根目录。 例如: C:\ sftp如何将此路径设置为我的服务器根目录。然后,客户端每次与服务器连接时都可以读取和写入文件。谢谢。 public class SftpServerStarter { private SshServer sshd; private final static Logger logger = LoggerFactory.getLogger(SftpServerStarter.class); public void start(){ sshd = SshServer.setUpDefaultServer(); sshd.setPort(22); sshd.setHost(“localhost”); sshd.setPasswordAuthenticator(new MyPasswordAuthenticator()); sshd.setPublickeyAuthenticator(new MyPublickeyAuthenticator()); sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider()); sshd.setSubsystemFactories(Arrays.<NamedFactory>asList(new SftpSubsystem.Factory())); sshd.setCommandFactory(new ScpCommandFactory()); try { logger.info(“Starting …”); sshd.start(); logger.info(“Started”); } catch (IOException e) { // […]

JSch库中SCP协议实现的说明

我正在考虑一个JSch库使用的例子,可以在这里找到: http://www.jcraft.com/jsch/examples/ScpFrom.java.html 我无法理解此示例中的几种代码模式。 他们来了: 是否有任何理由偏爱SF而不是SFTP,可以使用同一个库运行? 为什么我们在远程主机上运行scp -f 而不是简单地运行scp source_file_path destination_file_path ? 为什么在远程主机上执行更好? 在转移的开始有一条线 while(true){ int c=checkAck(in); if(c!=’C’){ break; } … 这个神奇的C字母是什么意思? 为何选择C ? 为什么要一直发送这个信号? // send ‘\0’ buf[0]=0; out.write(buf, 0, 1); out.flush(); 这怎么可以读取文件大小? long filesize=0L; while(true){ if(in.read(buf, 0, 1)<0){ // error break; } if(buf[0]==' ')break; filesize=filesize*10L+(long)(buf[0]-'0'); //What is this?? }

使用Java JSch进行SFTP文件传输

这是我的代码,它在远程服务器上检索文件的内容并显示为输出。 package sshexample; import com.jcraft.jsch.*; import java.io.*; public class SSHexample { public static void main(String[] args) { String user = “user”; String password = “password”; String host = “192.168.100.103”; int port=22; String remoteFile=”sample.txt”; try { JSch jsch = new JSch(); Session session = jsch.getSession(user, host, port); session.setPassword(password); session.setConfig(“StrictHostKeyChecking”, “no”); System.out.println(“Establishing Connection…”); session.connect(); System.out.println(“Connection established.”); System.out.println(“Creating […]

如何在java中通过SFTP传输文件?

如何在java中通过SFTP传输文件? 我想要SFTP客户端的示例代码。 我想在我的应用程序中嵌入SFTP服务器,客户端应该能够将文件发送到我的应用程序。 PS:这是SFTP客户端的要求。 而这个问题与其他两个问题并不重复。

如何使用JSch执行多个操作

我是SSH和JSch的新手。 当我从客户端连接到服务器时,我想做两个任务: 上传文件(使用ChannelSFTP ) 执行命令,例如创建目录,以及搜索MySQL数据库 目前我使用两个单独的shell登录来执行每个任务(实际上我还没有开始编程MySQL查询)。 对于上传相关代码是 session.connect(); Channel channel=session.openChannel(“sftp”); channel.connect(); ChannelSftp c=(ChannelSftp)channel; c.put(source, destination); 而对于我的命令 String command = “ls -l”;//just an example Channel channel=session.openChannel(“exec”); ((ChannelExec)channel).setCommand(command); 我应该在第一个频道之后断开会话,然后打开第二个频道吗? 或者完全关闭会话并开启新会话? 正如我所说,我是新手。

在JSch中使用channelsftp传输文件夹和子文件夹?

我想使用channelsftp传输文件夹和子文件夹。 我可以使用channelsftp.put(src,dest)命令成功传输文件channelsftp.put(src,dest)但这对文件夹不起作用(至少我无法使其工作)。 那么有人可以解释我如何使用channelsftp传输文件夹和子文件夹?

使用org.apache.commons.net.ftp.FTPClient保护FTP

有没有办法用org.apache.commons.net.ftp.FTPClient实现安全的FTP? 如果没有,Java的其他选项有哪些?