/// <summary> /// 获取SFTP文件列表 /// </summary> /// <param name="remotePath">远程目录</param> /// <param name="fileSuffix">文件前缀</param> /// <returns></returns> public ArrayList GetFileList(string remotePath, string fileSuffix) { try { //Connect(); var files = sftp.ListDirectory(remotePath); ///Disconnect(); var objList = new ArrayList(); foreach (var file in files) { string name = file.Name; if (name.Length > (fileSuffix.Length + 1) && fileSuffix == name.Split('@')[0])//获取文件前缀的 用户名日期 字符串 { objList.Add(name); } else if (name.Length > (fileSuffix.Length + 1) && fileSuffix == name.Split('.')[0])//获取文件前缀的 用户名日期 字符串 { objList.Add(name); } } return(objList); } catch (Exception ex) { throw new Exception(string.Format("SFTP文件列表获取失败,原因:{0}", ex.Message)); } }
public List <string> GetDirectoryInfo(string ftpDirectory, List <string> fileExtensions = null) { if (!_sftpClient.IsConnected) { _sftpClient.Connect(); } try { var directoryInfo = _sftpClient.ListDirectory(ftpDirectory).Where(w => w.IsRegularFile).Select(s => s.Name).ToList(); if (fileExtensions == null) { return(directoryInfo); } return(fileExtensions.Count == 0 ? directoryInfo : (from file in directoryInfo from fileExtension in fileExtensions where file.Contains(fileExtension) select file).ToList()); } catch (Exception ex) { throw new Exception(ex.Message); } finally { _sftpClient.Disconnect(); } }
/// <summary> /// 取得檔案資料夾完整資訊 /// </summary> /// <param name="ftpFolderPath"></param> /// <returns></returns> public List <FTPFileInfo> GetFileAndFolderListInfo(string ftpFolderPath) { try { var dataArr = _sftp.ListDirectory(ftpFolderPath); List <FTPFileInfo> result = new List <FTPFileInfo>(); foreach (var item in dataArr) { result.Add(new FTPFileInfo() { FullFileName = item.FullName, FileName = Path.GetFileName(item.FullName), ModifiedDate = item.LastAccessTime, FileSize = item.Length }); } return(result); } catch (Exception ex) { throw new Exception(string.Format("取得FTP表單失敗,原因:{0}", ex.ToString())); } }
/// <summary> /// 取得文件列表 /// </summary> /// <param name="path">路径</param> /// <returns></returns> public List <string> ListFiles(string path) { if (!Connect()) { return(null); } List <string> files = new List <string>(); try { sftp.ChangeDirectory("/"); sftp.ListDirectory(path).ToList().ForEach(f => { files.Add(f.FullName); }); return(files); } catch (Exception ex) { // logger.Error("[{0}] 取得文件列表发生错误。", Path, ex); return(null); } }
/// <summary> /// 获取SFTP文件列表 /// </summary> /// <param name="remotePath">远程目录</param> /// <param name="fileSuffix">文件后缀</param> /// <returns></returns> public ArrayList GetFileList(string remotePath, string fileSuffix) { try { Connect(); var files = sftp.ListDirectory(remotePath); Disconnect(); var objList = new ArrayList(); foreach (var file in files) { string name = file.Name; if (name.Length > (fileSuffix.Length + 1) && fileSuffix == name.Substring(name.Length - fileSuffix.Length)) { objList.Add(name); //objList.Add(file.LastWriteTime); } } return(objList); } catch (Exception ex) { // TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("SFTP文件列表获取失败,原因:{0}", ex.Message)); throw new Exception(string.Format("SFTP文件列表获取失败,原因:{0}", ex.Message)); } }
/// <summary> /// Delete Folder for target path /// </summary> /// <param name="folderPath">folder path</param> /// <returns>success or not</returns> public bool DeleteDirectory(string folderPath) { bool ret = false; if (IsSftpClientActive()) { IEnumerable <SftpFile> sftpFiles = sftpClient.ListDirectory(folderPath); foreach (var file in sftpFiles) { if ((file.Name != UPPER_PATH_1) && (file.Name != UPPER_PATH_2)) { if (file.IsDirectory) { DeleteDirectory(file.FullName); } else { sftpClient.DeleteFile(file.FullName); } } } sftpClient.DeleteDirectory(folderPath); ret = true; } return(ret); }
/// <inheritdoc /> public async Task <object> CanConnect(string relativePath) { var result = new Dictionary <string, object>(); try { sftpClient.Connect(); result["connectionExists"] = true; await Task.Run(() => sftpClient.ListDirectory(relativePath)); result["folderExists"] = true; return(result); } catch (Renci.SshNet.Common.SftpPathNotFoundException) { result["folderExists"] = false; return(result); } catch (Exception) { return(new Dictionary <string, object> { ["connectionExists"] = false, ["folderExists"] = false }); } finally { sftpClient.Disconnect(); } }
}// TryInitialize() // // // // // **** TryGetFiles() **** // /// <summary> /// Returns a list of all files found on the ftp server. /// </summary> private bool TryGetFileNames(out List <Renci.SshNet.Sftp.SftpFile> fileList) { fileList = null; SftpClient client; using (client = new SftpClient(m_Host, m_PortID, m_UserName, m_PrivateKeyFile)) { try { client.Connect(); Log.NewEntry(LogLevel.Major, "Connected to {0}", m_Host); string workingDir = client.WorkingDirectory; var listDirectory = client.ListDirectory(workingDir); fileList = new List <Renci.SshNet.Sftp.SftpFile>(client.ListDirectory(workingDir)); client.Disconnect(); } catch (Exception ex) { Log.NewEntry(LogLevel.Major, "Failed to connect. {0}", ex.Message); return(false); } } // Exit return(true); } // TryConnect()
public static void List(SftpClient sftp, string path) { string hiddenFiles = "."; //Dont list system files and etc List <SftpFile> directories = sftp.ListDirectory(path).ToList(); foreach (var dir in directories) { if (!dir.Name.StartsWith(hiddenFiles)) { Console.WriteLine(dir.Name); if (dir.IsDirectory) { List <SftpFile> subDirectories = sftp.ListDirectory(dir.FullName.TrimEnd()).ToList(); foreach (var sDir in subDirectories) { if (!sDir.Name.StartsWith(hiddenFiles)) { Console.WriteLine(sDir.Name); if (sDir.IsDirectory) { List(sftp, sDir.FullName); } } } } } } }
public IEnumerable <Guid> GetAllGridGUIDs() { EnsureIsInitialized(); return(sftp.ListDirectory(CombinePaths(path, StandardFsDriver.GridsDir)). Where(f => f.IsRegularFile). Where(f => f.Name.EndsWith(".grid")). Select(f => new Guid(f.Name.Substring(0, 36))).ToArray()); }
/// <summary> /// 获取发布的历史 删除过期的 /// </summary> /// <param name="destinationFolder"></param> /// <param name="pageNumber">数量</param> /// <returns></returns> public List <string> GetDeployHistoryWithOutRemark(string destinationFolder, int pageNumber = 0) { var result = new List <Tuple <string, DateTime> >(); try { if (!destinationFolder.EndsWith("/")) { destinationFolder = destinationFolder + "/"; } destinationFolder = destinationFolder + PorjectName + "/"; if (!_sftpClient.Exists(destinationFolder)) { return(new List <string>()); } //获取该目录下的所有日期文件夹 List <SftpFile> folderList; if (pageNumber < 1) { folderList = _sftpClient.ListDirectory(destinationFolder).Where(r => r.IsDirectory). OrderByDescending(r => r.LastWriteTime).ToList(); } else { folderList = _sftpClient.ListDirectory(destinationFolder).Where(r => r.IsDirectory). OrderByDescending(r => r.LastWriteTime).Take(pageNumber).ToList(); } foreach (var folder in folderList) { if ((folder.Name == ".") || (folder.Name == "..")) { continue; } var temp = folder.Name.Replace("_", ""); if (DateTime.TryParseExact(temp, "yyyyMMddHHmmss", null, DateTimeStyles.None, out DateTime d)) { result.Add(new Tuple <string, DateTime>(folder.Name, d)); } } } catch (Exception ex) { _logger(ex.Message, LogLevel.Error); } return(result.OrderByDescending(r => r.Item2).Select(r => r.Item1).ToList()); }
public Task <IEnumerable <string> > GetDirectories(string directoryPath) { return(HandleCommonExceptions(() => { _logger?.LogDebug($"GetDirectories('{directoryPath}')"); var allFiles = _client.ListDirectory(directoryPath); var dirs = allFiles .Where(file => file.IsDirectory) .Select(file => file.Name) .Where(name => !IsSpecificDirectory(name)); _logger?.LogDebug($"GetDirectories('{directoryPath}'): {dirs.Count()} dirs"); return dirs; })); }
public List <string> GetFile(string workingdirectory, string extension = ".zip") { try { IEnumerable <SftpFile> sftpFileArr = client.ListDirectory(workingdirectory); List <string> sftpFileList = sftpFileArr.Where(x => Path.GetExtension(x.FullName).Contains(extension)).Select(x => x.FullName).ToList(); return(sftpFileList); } catch (Exception ex) { throw ex; } }
private static void SftpTest() { var connInfoSource = new PasswordConnectionInfo("", 22, "", ""); using (var sftp = new SftpClient(connInfoSource)) { sftp.Connect(); sftp.ChangeDirectory("outgoing"); var ftpFiles = sftp.ListDirectory(".").ToList(); var root = sftp.ListDirectory("").ToList(); var Directories = ftpFiles.Where(x => x.IsDirectory).ToList(); var files = ftpFiles.Where(x => x.IsRegularFile).ToList(); } }
public List <IFile> GetFiles(string filter) { var files = new List <IFile>(); var fileList = _client.ListDirectory(_path).Where(x => !x.IsDirectory).ToList(); if (filter != null) { fileList = fileList.Where(x => x.Name.Equals(filter, StringComparison.InvariantCultureIgnoreCase)).ToList(); } fileList.ForEach(x => files.Add(new File(x.FullName, _client, x.Name))); return(files); }
public string[] GetFileList() { //SftpItemCollection list = client.GetList(); var files = client.ListDirectory(this.client.WorkingDirectory); string[] results = new string[files.Count()]; int i = 0; foreach (var item in files) { results[i++] = item.Name; } return(results); }
//Uploades a hex file to the Pi and programs it to the Teensy //Would be good to parse feedback from the Teensy cli loader //Validating the file would good too. //The ssh upload library is pretty unforgiving, need to parse and handle errors from it public static bool uploadFile(string host_ip, string username, string password, string localFile, string remoteFile) { try { using (SftpClient ssh = new SftpClient(host_ip, username, password)) { ssh.ConnectionInfo.Timeout = new TimeSpan(0, 0, 3); ssh.Connect(); FileStream stream = new FileStream(localFile, FileMode.Open); if (ssh.ListDirectory("/").FirstOrDefault(x => x.Name == "teensyTemp") == null) { ssh.CreateDirectory("/teensyTemp"); } ssh.ChangeDirectory("/teensyTemp"); ssh.UploadFile(stream, remoteFile); ssh.Disconnect(); stream.Close(); } using (SshClient ssh = new SshClient(host_ip, username, password)) { ssh.ConnectionInfo.Timeout = new TimeSpan(0, 0, 3); ssh.Connect(); ssh.RunCommand("prog_teensy " + "\"/teensyTemp/" + remoteFile + "\""); ssh.RunCommand("rm " + "\"/teensyTemp/" + remoteFile + "\""); ssh.Disconnect(); } } catch (Exception e) { Console.WriteLine("SSH Failed: " + e.ToString()); return(false); } return(true); }
public ActionResult GetAll() { string result = ""; using (var client = new SftpClient(host, port, username, password)) { client.Connect(); result = client.ConnectionInfo.ServerVersion; var files = client.ListDirectory("/folder/Test/inbounds/"); foreach (var file in files) { if (!file.Name.StartsWith(".")) { string remoteFileName = file.Name; var filePath = Path.Combine(@"c:\Project\testing2\", remoteFileName); Stream stream = System.IO.File.Create(filePath); client.DownloadFile("/folder/Test/inbounds/" + remoteFileName, stream); stream.Close(); } } } return(Ok(result)); }
void DownLoadJsonFile() { if (ServerList.selected_serverinfo_textblock.serverinfo == null) { return; } string ip = ServerList.selected_serverinfo_textblock.serverinfo.ip; string id = ServerList.selected_serverinfo_textblock.serverinfo.id; string password = ServerList.selected_serverinfo_textblock.serverinfo.password; SftpClient sftp = new SftpClient(ip, id, password); sftp.Connect(); string local_directory = AppDomain.CurrentDomain.BaseDirectory; string remote_directory = "/home/cofile/bin/"; var files = sftp.ListDirectory(remote_directory); foreach (var file in files) { if (file.Name.Length > 4 && file.Name.Substring(file.Name.Length - 5) == ".json") { FileStream fs = new FileStream(local_directory + file.Name, FileMode.Create); sftp.DownloadFile(remote_directory + file.Name, fs); Console.WriteLine("[ download ] " + file.Name); } } }
} // end of wpmConnect public string[] simpledirectorylist(string remoteFolder) { try { using (var sftp = new SftpClient(host, Port, user, pass)) { String[] dList = new string[] { }; sftp.Connect(); var files = sftp.ListDirectory(remoteFolder); int i = 0; foreach (var file in files) { if (!file.Name.StartsWith(".")) { i++; Array.Resize(ref dList, i); dList[i - 1] = file.Name; string v = file.Length.ToString(); } } sftp.Disconnect(); return(dList); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } return(new string[] { "" }); }
/// <summary> /// 取得 SFTP 路徑上的檔案與文件夾 /// </summary> /// <param name="sftpPath">遠端路徑</param> /// <param name="filenameExtension">附檔名</param> /// <returns></returns> public List <string> GetFileList(string sftpPath, string filenameExtension = "") { try { Connect(); IEnumerable <SftpFile> files = sftp.ListDirectory(sftpPath); Disconnect(); if (string.IsNullOrEmpty(filenameExtension)) { List <string> fileList = new List <string>(); foreach (var file in files) { string fileName = Path.GetFileName(file.FullName); if (fileName == "." || fileName == "..") { continue; } fileList.Add(fileName); } return(fileList); } else { return(matchFileName(filenameExtension, files)); } } catch (Exception ex) { throw ex; } }
public List <string> Receive(TargetTransformData sourceData, string targetPath, string regex) { List <string> result = new List <string>(); string host = sourceData.IpAddress; string userName = sourceData.Login; string password = sourceData.Password; string sourcePath = sourceData.Path; string localPath = targetPath; WildcardPattern wildCard = new WildcardPattern(regex); using (var sftp = new SftpClient(host, userName, password)) { sftp.Connect(); var files = sftp.ListDirectory(sourcePath); foreach (var file in files) { string fileName = file.Name; if (wildCard.IsMatch(fileName)) { Stream file1 = File.OpenRead(localPath); sftp.DownloadFile(file.FullName, file1); result.Add(localPath + file.Name); } } } return(result); }
public string List_File(string dir) { string[] strSplit = dir.Split('/'); string path = ""; for (var i = 0; i < strSplit.Length - 1; i++) { path += strSplit[i] + "/"; } dir = strSplit[strSplit.Length - 1]; ArrayList pList = new ArrayList(); SftpClt.ChangeDirectory(path);// "/"); string strReturn = ""; foreach (var entry in SftpClt.ListDirectory(dir)) { if (entry.IsDirectory) { //ListDirectory(client, entry.FullName, ref files); } else { strReturn += entry.FullName + "|"; //pList.Add(entry.FullName); } } if (strReturn.EndsWith("|")) { strReturn = strReturn.Substring(0, strReturn.Length - 1); } return(strReturn); }
private void DownloadDirectory(SftpClient client, string source, string destination, bool recursive = false) { // List the files and folders of the directory var files = client.ListDirectory(source); // Iterate over them foreach (SftpFile file in files) { // If is a file, download it if (!file.IsDirectory && !file.IsSymbolicLink) { DownloadFile(client, file, destination); } // If it's a symbolic link, ignore it else if (file.IsSymbolicLink) { Console.WriteLine("Symbolic link ignored: {0}", file.FullName); } // If its a directory, create it locally (and ignore the .. and .=) //. is the current folder //.. is the folder above the current folder -the folder that contains the current folder. else if (file.Name != "." && file.Name != "..") { var dir = Directory.CreateDirectory(Path.Combine(destination, file.Name)); // and start downloading it's content recursively :) in case it's required if (recursive) { DownloadDirectory(client, file.FullName, dir.FullName); } } } }
/// <summary> /// Deletes the directory recursively. /// </summary> /// <param name="remoteDirectory">The remote directory.</param> public static void DeleteDirectoryRecursive(string remoteDirectory, SftpClient Client) { if (!Client.Exists(remoteDirectory)) { return; } foreach (var file in Client.ListDirectory(remoteDirectory)) { if (file.Name.Equals(".") || file.Name.Equals("..")) { continue; } if (file.IsDirectory) { DeleteDirectoryRecursive(file.FullName, Client); } else { Client.DeleteFile(file.FullName); } } Client.DeleteDirectory(remoteDirectory); }
private void downloadWithSFTP(string fileName) { string host = parts[1]; string port = parts[2]; string username = parts[3]; try { using (Stream stream = new FileStream(getDownloadFolderPath() + @"\" + fileName, FileMode.Create)) using (var sftp = new SftpClient(host, Convert.ToInt32(port), username, PasswordTBDownload.Text.ToString())) { sftp.Connect(); SftpFileAttributes attributes = sftp.GetAttributes("./" + fileName); var files = sftp.ListDirectory("./"); progressBar1.Invoke( (MethodInvoker) delegate { progressBar1.Maximum = (int)attributes.Size; }); sftp.DownloadFile(fileName, stream, UpdateProgressBar); MessageBox.Show("Download Complete"); sftp.Disconnect(); sftp.Dispose(); } } catch (Exception e) { MessageBox.Show(e.Message, "Αn Εrror Οccurred", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public async Task <List <DownLoadedFileModel> > DownLoadAsync(FTPSettings ftpSetting) { var SemaphoreForRecord = new SemaphoreSlim(ftpSetting.SemaphoreSlimInit, ftpSetting.SemaphoreSlimMax); List <DownLoadedFileModel> files = new List <DownLoadedFileModel>(); List <SftpFile> ftpFiles; List <Task <DownLoadedFileModel> > DLFileTasks = new List <Task <DownLoadedFileModel> >(); var connInfoSource = new PasswordConnectionInfo(ftpSetting.Server.Host, ftpSetting.Server.Port, ftpSetting.Server.UserId, ftpSetting.Server.Password); using (var sftp = new SftpClient(connInfoSource)) { sftp.Connect(); ftpFiles = sftp.ListDirectory(ftpSetting.RootPath).Where(x => x.IsRegularFile).ToList(); foreach (var file in ftpFiles) { DLFileTasks.Add(DownLoadAFileProcessAsync(file, sftp, ftpSetting.OutPutPath, SemaphoreForRecord)); } var downloadfiles = await Task.WhenAll(DLFileTasks); files = downloadfiles.Where(x => !string.IsNullOrEmpty(x.LocalPath)).ToList(); sftp.Disconnect(); } return(files); }
public void RunFTPSync() { var now = DateTime.UtcNow.ToLocalTime(); var lastRun = ReadLastRun(); using (SftpClient ftp = new SftpClient(ConfigurationManager.AppSettings["FTP_URL"], ConfigurationManager.AppSettings["FTP_Username"], ConfigurationManager.AppSettings["FTP_Password"])) { var ftp_directory = ConfigurationManager.AppSettings["FTP_Directory"]; ftp.Connect(); ftp_directory.Split('/').ToList().ForEach(f => ftp.ChangeDirectory(f)); var files = ftp.ListDirectory("."); files = files.Where(f => !f.Name.Equals(".") && !f.Name.Equals("..")).Where(f => f.LastWriteTime > lastRun && f.LastWriteTime < now).Where(f => { var actualTime = f.ActualLastWriteTime(ftp, ftp_directory); return (actualTime > lastRun && actualTime < now); }).ToList(); DownloadFiles(files, ftp, ftp_directory); WriteLastRan(now.ToString()); //uncommentn after done testing //Run shell script to update theia library } }
//------------------------------------------------------------------ // ファイル表示 private void printFiles( SftpClient _sftp, // sftpクライアント string _Path // パス ) { // ★日本語ファイル名を扱う際の注意★ // ファイルパスなどはConnectionInfoクラスの中にEncodingというプロパティにエンコーディング情報を設定する。 // SftpClientのread/write等でのファイル内容でのエンコーディングは別途引数で指定する。 // 指定パスを調べる foreach (var file in _sftp.ListDirectory(_Path)) { if (file.Name.StartsWith(".")) { continue; } if (file.IsDirectory) { // ディレクトリなら再帰して調べる printFiles(_sftp, file.FullName); } else { // 表示 Console.WriteLine($"{file.FullName}\t\t{file.LastAccessTime}\t{file.LastWriteTime}"); } } }
public ActionResult GetFTPPathContents(FTPCredentials credentials, string path) { using (var sftp = new SftpClient(credentials.Address, credentials.Port, credentials.Login, credentials.Password)) { try { sftp.Connect(); var results = sftp.ListDirectory(path); return(Json(results.Where(r => r.Name != "." && r.Name != "..").Select(r => new FTPItems { Name = r.Name, Path = r.FullName, Type = r.IsDirectory ? ItemTypes.Folder : ItemTypes.File, Length = r.Length }))); } finally { if (sftp.IsConnected) { sftp.Disconnect(); } } } }
public void Test_Sftp_ListDirectory_Without_Connecting() { using (var sftp = new SftpClient(Resources.HOST, Resources.USERNAME, Resources.PASSWORD)) { var files = sftp.ListDirectory("."); foreach (var file in files) { Debug.WriteLine(file.FullName); } } }
public void Test_Sftp_ListDirectory_Not_Exists() { using (var sftp = new SftpClient(Resources.HOST, Resources.USERNAME, Resources.PASSWORD)) { sftp.Connect(); var files = sftp.ListDirectory("/asdfgh"); foreach (var file in files) { Debug.WriteLine(file.FullName); } sftp.Disconnect(); } }
public void Test_Sftp_ListDirectory_Current() { using (var sftp = new SftpClient(Resources.HOST, Resources.USERNAME, Resources.PASSWORD)) { sftp.Connect(); var files = sftp.ListDirectory("."); Assert.IsTrue(files.Count() > 0); foreach (var file in files) { Debug.WriteLine(file.FullName); } sftp.Disconnect(); } }
public void Test_Sftp_ListDirectory_HugeDirectory() { using (var sftp = new SftpClient(Resources.HOST, Resources.USERNAME, Resources.PASSWORD)) { sftp.Connect(); // Create 10000 directory items for (int i = 0; i < 10000; i++) { sftp.CreateDirectory(string.Format("test_{0}", i)); Debug.WriteLine("Created " + i); } var files = sftp.ListDirectory("."); // Ensure that directory has at least 10000 items Assert.IsTrue(files.Count() > 10000); sftp.Disconnect(); } }
public void Test_Sftp_Change_Directory() { using (var sftp = new SftpClient(Resources.HOST, Resources.USERNAME, Resources.PASSWORD)) { sftp.Connect(); Assert.AreEqual(sftp.WorkingDirectory, "/home/tester"); sftp.CreateDirectory("test1"); sftp.ChangeDirectory("test1"); Assert.AreEqual(sftp.WorkingDirectory, "/home/tester/test1"); sftp.CreateDirectory("test1_1"); sftp.CreateDirectory("test1_2"); sftp.CreateDirectory("test1_3"); var files = sftp.ListDirectory("."); Assert.IsTrue(files.First().FullName.StartsWith(string.Format("{0}", sftp.WorkingDirectory))); sftp.ChangeDirectory("test1_1"); Assert.AreEqual(sftp.WorkingDirectory, "/home/tester/test1/test1_1"); sftp.ChangeDirectory("../test1_2"); Assert.AreEqual(sftp.WorkingDirectory, "/home/tester/test1/test1_2"); sftp.ChangeDirectory(".."); Assert.AreEqual(sftp.WorkingDirectory, "/home/tester/test1"); sftp.ChangeDirectory(".."); Assert.AreEqual(sftp.WorkingDirectory, "/home/tester"); files = sftp.ListDirectory("test1/test1_1"); Assert.IsTrue(files.First().FullName.StartsWith(string.Format("{0}/test1/test1_1", sftp.WorkingDirectory))); sftp.ChangeDirectory("test1/test1_1"); Assert.AreEqual(sftp.WorkingDirectory, "/home/tester/test1/test1_1"); sftp.ChangeDirectory("/home/tester/test1/test1_1"); Assert.AreEqual(sftp.WorkingDirectory, "/home/tester/test1/test1_1"); sftp.ChangeDirectory("/home/tester/test1/test1_1/../test1_2"); Assert.AreEqual(sftp.WorkingDirectory, "/home/tester/test1/test1_2"); sftp.ChangeDirectory("../../"); sftp.DeleteDirectory("test1/test1_1"); sftp.DeleteDirectory("test1/test1_2"); sftp.DeleteDirectory("test1/test1_3"); sftp.DeleteDirectory("test1"); sftp.Disconnect(); } }
private IEnumerable<SftpFile> GetFilesRecur(SftpClient ssh, SftpFile sftpDir) { if (!sftpDir.IsDirectory) { return new[] {sftpDir}; } var fl = new List<SftpFile>(); foreach (var sftpFile in ssh.ListDirectory(sftpDir.FullName)) { if (sftpFile.IsRegularFile) { fl.Add(sftpFile); } else if (sftpFile.IsDirectory && sftpFile.Name != "." && sftpFile.Name != "..") { fl.AddRange(GetFilesRecur(ssh, sftpFile)); } } return fl; }
private void button1_Click(object sender, EventArgs e) { try { /*if (AllFieldsSet() == false) { Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strPleaseFillAllFields); return; }*/ lvSSHFileBrowser.Items.Clear(); var ssh = new SftpClient(txtHost.Text, int.Parse(this.txtPort.Text), txtUser.Text, txtPassword.Text); ssh.Connect(); var res = ssh.ListDirectory(txtRemoteFolderPath.Text).ToList().OrderBy(file => !file.IsDirectory).ThenBy(file => file.Name); var l = new List<EXImageListViewItem>(); foreach (var item in res) { if (item.Name==".") { continue; } EXImageListViewItem imglstvitem = new EXImageListViewItem(); imglstvitem.MyImage = item.IsDirectory ? global::My.Resources.Resources.Folder : global::My.Resources.Resources.File; imglstvitem.MyValue = item.FullName; imglstvitem.Tag = item; imglstvitem.SubItems.Add(item.Name); imglstvitem.SubItems.Add(item.IsDirectory ? "" : Tools.Misc.LengthToHumanReadable(item.Length)); l.Add(imglstvitem); } ssh.Disconnect(); lvSSHFileBrowser.Items.AddRange(l.ToArray()); lvSSHFileBrowser.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public void ListDirectoryTest() { ConnectionInfo connectionInfo = null; // TODO: Initialize to an appropriate value SftpClient target = new SftpClient(connectionInfo); // TODO: Initialize to an appropriate value string path = string.Empty; // TODO: Initialize to an appropriate value Action<int> listCallback = null; // TODO: Initialize to an appropriate value IEnumerable<SftpFile> expected = null; // TODO: Initialize to an appropriate value IEnumerable<SftpFile> actual; actual = target.ListDirectory(path, listCallback); Assert.AreEqual(expected, actual); Assert.Inconclusive("Verify the correctness of this test method."); }
public void Test_Sftp_ListDirectory_Permission_Denied() { using (var sftp = new SftpClient(Resources.HOST, Resources.USERNAME, Resources.PASSWORD)) { sftp.Connect(); var files = sftp.ListDirectory("/etc/audit"); foreach (var file in files) { Debug.WriteLine(file.FullName); } sftp.Disconnect(); } }