SharpSSH进步和重命名

时间:2010-08-23 15:01:01

标签: vb.net sftp jsch sharpssh

使用库连接到远程服务器并复制文件。我有一个相当好的过程,但有一些较小的东西,我似乎无法解决,因为该库的文档相当薄。

我有两个例行程序。一个使用Tamir.SharpSsh类,另一个使用Tamir.SharpSsh.jsch类。

  1. 使用Tamir.SharpSsh类我可以将文件从本地服务器复制到远程服务器并点击pogress事件。我不能做的是确定远程服务器上的特定文件是否说服务器上存在/Report/data.txt。如果它存在或者不存在,我需要采取不同的行动。另外,我如何重命名远程服务器上的文件。我尝试过使用带有'rename','rn'和'mv'命令的SshExec,它似乎不起作用。

  2. 使用Tamir.SharpSsh.jsch我可以将文件从本地服务器复制到远程服务器。我也可以在远程服务器上重命名该文件。我不能用这个课程来进入进度事件以跟踪复制进度。此外,我似乎无法找到一个好方法来测试服务器上是否存在特定文件。我想出的是粗糙的,我能够提出测试的唯一方法就是使用

        Dim c As ChannelSftp
        Dim vct As Tamir.SharpSsh.java.util.Vector = c.ls(sRemoteFile)
        Dim cnt As Integer = vct.Count
    
  3. 当一个或多个文件存在时,我得到一个计数没问题。如果没有文件,则抛出异常。

    无论如何,我有一些例行程序正在处理我需要帮助的一些小事。

    TIA AGP

3 个答案:

答案 0 :(得分:2)

您可以使用您要检查的文件的路径调用Tamir.SharpSsh.Sftp.GetFile方法(例如在C#中,抱歉):

private bool FileExists(string filePath)
{
    try
    {
        SftpConnection connection = new SftpConnection(_host, _username, _password);
        connection.Connect(_port);
        connection.Get(filePath, _toDir);
    }
    catch(JSchException)
    {
        return false;
    }
    return true;
}

我通过使用这个库也注意到了一些其他问题 - 比如缺少GetFileInfo方法或递归的获取和推送。但总的来说,它完成了工作。

简单的事实是,Tamir.SharpSsh无法远程重命名文件 - 它只是没有实现该功能。您可以购买具有更多功能的更好的库,例如:

  • Kellerman Software .NET SFTP Library
  • wodSFTP.NET
  • Rebex SFTP for .NET
  • edtFTPnet / PRO

或者您可以扩展SharpSsh,因为它是开源的。

答案 1 :(得分:0)

您的问题是由于SFTP协议的限制。 - 检查文件是否存在,尝试返回该文件的属性; - 目前大多数服务器都不支持文件重命名。

答案 2 :(得分:0)