使用库连接到远程服务器并复制文件。我有一个相当好的过程,但有一些较小的东西,我似乎无法解决,因为该库的文档相当薄。
我有两个例行程序。一个使用Tamir.SharpSsh类,另一个使用Tamir.SharpSsh.jsch类。
使用Tamir.SharpSsh类我可以将文件从本地服务器复制到远程服务器并点击pogress事件。我不能做的是确定远程服务器上的特定文件是否说服务器上存在/Report/data.txt。如果它存在或者不存在,我需要采取不同的行动。另外,我如何重命名远程服务器上的文件。我尝试过使用带有'rename','rn'和'mv'命令的SshExec,它似乎不起作用。
使用Tamir.SharpSsh.jsch我可以将文件从本地服务器复制到远程服务器。我也可以在远程服务器上重命名该文件。我不能用这个课程来进入进度事件以跟踪复制进度。此外,我似乎无法找到一个好方法来测试服务器上是否存在特定文件。我想出的是粗糙的,我能够提出测试的唯一方法就是使用
Dim c As ChannelSftp
Dim vct As Tamir.SharpSsh.java.util.Vector = c.ls(sRemoteFile)
Dim cnt As Integer = vct.Count
当一个或多个文件存在时,我得到一个计数没问题。如果没有文件,则抛出异常。
无论如何,我有一些例行程序正在处理我需要帮助的一些小事。
TIA AGP
答案 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无法远程重命名文件 - 它只是没有实现该功能。您可以购买具有更多功能的更好的库,例如:
或者您可以扩展SharpSsh,因为它是开源的。
答案 1 :(得分:0)
您的问题是由于SFTP协议的限制。 - 检查文件是否存在,尝试返回该文件的属性; - 目前大多数服务器都不支持文件重命名。
答案 2 :(得分:0)