当前位置: 首页 > news >正文

使用.NET SFTP 登陆linux上传下载文件

1. 从这里下载
https://github.com/sshnet/SSH.NET

2. 使用wrapper 类

...
public static IList<string> SearchLogs(DateTime fromDate, DateTime toDate)
        {
            var path = Config.LogPath;

            Renci.SshNet.SftpClient sftp = null;
            try
            {
                Console.WriteLine($"trying connect sftp server {Config.IP} with user {Config.UserName}");
                _log.Info($"trying connect sftp server {Config.IP} with user {Config.UserName}");

                sftp = new Renci.SshNet.SftpClient(Config.IP, Config.UserName, Config.Password);
                sftp.Connect();
                Console.WriteLine("sftp connected.");
                _log.Info("sftp connected.");

                var dirs = sftp.ListDirectory(path).ToList();
                var list = new List<string>();
                if (dirs.Count > 0)
                {
                    Console.WriteLine($"{dirs.Count} files detected. downloading.");
                    _log.Info($"{dirs.Count} files detected. downloading.");

                    var tmpPath = MakesureTempFolderCreated();

                    foreach (var sftpFile in dirs)
                    {
                        var ftpFileName = sftpFile.Name;

                        if (!Check(ftpFileName, fromDate, toDate)){
                            continue;
                        }

                        var filePath = Path.Combine(tmpPath, ftpFileName);
                        IfExistThenDelete(filePath);

                        using (var fs = new FileStream(filePath, FileMode.Create))
                        {
                            sftp.DownloadFile(sftpFile.FullName, fs);
                            Console.WriteLine($"file {ftpFileName} has been saved into local path :{filePath} .");
                            _log.Info($"file {ftpFileName} has been saved into local path :{filePath} .");
                        }
                        list.Add(filePath);
                    }
                }
                else
                {
                    Console.WriteLine("No file has been found on SFTP server ");
                }


                Console.WriteLine($"{list.Count} files downloaded from SFTP server [{Config.IP}] ");
                return list;
            }
            catch (Exception ex)
            {
                _log.Error(ex);
                return new List<string>();
            }
            finally
            {
                if (sftp != null)
                {
                    sftp.Disconnect();
                }
            }
        }
...

 

相关文章:

  • c# 使用7zip
  • Ubuntu source list
  • C# EF动态获取连接字符串的MSDTC配置
  • ubuntu 安装python3和open cv
  • Linux下类FreeBSD uprintf实现
  • ubuntu配置ssh服务
  • 软件项目一直赶工期,越改越忙,怎么破?
  • 迁移Blog平台
  • 使用Python face_recognition 人脸识别 - 1
  • 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之12---BREW里面有什么...
  • 使用Python face_recognition 人脸识别 - 2 人脸1-1比对
  • SUBMIT 的使用方法...
  • 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之13---BREW精要之COM 模型...
  • 使用Python face_recognition 人脸识别 - 5 人脸比对并打分
  • 天翼3G终端四大思路存疑
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【Linux系统编程】快速查找errno错误码信息
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • FastReport在线报表设计器工作原理
  • Idea+maven+scala构建包并在spark on yarn 运行
  • js作用域和this的理解
  • node学习系列之简单文件上传
  • Promise面试题,控制异步流程
  • Vue官网教程学习过程中值得记录的一些事情
  • Web标准制定过程
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 后端_MYSQL
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 理清楚Vue的结构
  • 力扣(LeetCode)357
  • 提醒我喝水chrome插件开发指南
  • 通过几道题目学习二叉搜索树
  • 找一份好的前端工作,起点很重要
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • hi-nginx-1.3.4编译安装
  • (0)Nginx 功能特性
  • (10)STL算法之搜索(二) 二分查找
  • (13)Hive调优——动态分区导致的小文件问题
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (javascript)再说document.body.scrollTop的使用问题
  • (独孤九剑)--文件系统
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (学习日记)2024.01.09
  • (转)C#调用WebService 基础
  • (转)程序员疫苗:代码注入
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET Core 版本不支持的问题
  • .NET Micro Framework初体验
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 材料检测系统崩溃分析
  • .NET 中的轻量级线程安全
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • [ C++ ] STL_vector -- 迭代器失效问题