zoukankan      html  css  js  c++  java
  • .net 如何连接linux上传下载文件?

    1.net连接linux上传下载文件可以通过scp命令来实现,首先需要我们引入“Renci.SshNet.dll”

      1   public class SCPOperation
      2     {
      3         private ScpClient ssh;
      4 
      5         /// <summary>
      6         /// SCP连接状态
      7         /// </summary>
      8         public bool Connected { get { return ssh.IsConnected; } }
      9 
     10         /// <summary>
     11         /// 构造方法
     12         /// </summary>
     13         /// <param name="ip">IP</param>
     14         /// <param name="port">端口</param>
     15         /// <param name="user">用户名</param>
     16         /// <param name="pwd">密码</param>
     17         public SCPOperation(string ip, string port, string user, string pwd)
     18         {
     19             ssh = new ScpClient(ip, Int32.Parse(port), user, pwd);
     20         }
     21 
     22         /// <summary>
     23         /// 连接SCP
     24         /// </summary>
     25         /// <returns>true成功</returns>
     26         public bool Connect()
     27         {
     28             try
     29             {
     30                 if (!Connected)
     31                 {
     32                     ssh.Connect();
     33                 }
     34                 return true;
     35             }
     36             catch (Exception ex)
     37             {
     38                 throw new Exception(string.Format("连接SFTP失败,原因:{0}", ex.Message));
     39             }
     40         }
     41 
     42         /// <summary>
     43         /// 断开SCP
     44         /// </summary> 
     45         public bool Disconnect()
     46         {
     47             try
     48             {
     49                 if (ssh != null && Connected)
     50                 {
     51                     ssh.Disconnect();
     52                 }
     53                 return true;
     54             }
     55             catch (Exception ex)
     56             {
     57                 throw new Exception(string.Format("断开SFTP失败,原因:{0}", ex.Message));
     58             }
     59         }
     60 
     61         /// <summary>
     62         /// SCP上传文件
     63         /// </summary>
     64         /// <param name="localPath">本地路径</param>
     65         /// <param name="remotePath">远程路径</param>
     66         public int Upload(string localPath, string remotePath)
     67         {
     68             try
     69             {
     70                 FileInfo file = new FileInfo(localPath);
     71                 Connect();
     72                 ssh.Upload(file, remotePath);
     73                 Disconnect();
     74                 return 1;
     75             }
     76             catch (Exception ex)
     77             {
     78                 throw new Exception(string.Format("SFTP文件上传失败,原因:{0}", ex.Message));
     79                 return 0;
     80             }
     81         }
     82 
     83         /// <summary>
     84         /// SCP获取文件
     85         /// </summary>
     86         /// <param name="remotePath">远程路径</param>
     87         /// <param name="localPath">本地路径</param>
     88         public void Get(string remotePath, string localPath)
     89         {
     90             try
     91             {
     92                 Connect();
     93                 DirectoryInfo localdir = new DirectoryInfo(localPath);
     94                 ssh.Download(remotePath, localdir);
     95                 Disconnect();
     96             }
     97             catch (Exception ex)
     98             {
     99                 throw new Exception(string.Format("SFTP文件获取失败,原因:{0}", ex.Message));
    100             }
    101 
    102         }
    103 
    104     }

    2.调用测试:

     1         string host = "192.168.1.1";
     2             string user = "root";
     3             string pwd = "koolshare";
     4             string port = "22";
     5             string remotePath = "/tmp/";
     6             string localPath = @"d:/test.txt";
     7             SCPOperation scpClinet = new SCPOperation(host, port, user, pwd);
     8             bool isSuccess = scpClinet.Connect();
     9             if (isSuccess)
    10             {
    11                 Console.WriteLine("connect success");
    12                 scpClinet.Put(localPath, remotePath);
    13             }
    14             else
    15             {
    16                 Console.WriteLine("failed");
    17             }
  • 相关阅读:
    vue-cli
    respond.js
    dataTable调用接口渲染数据,没有数据,报错
    jq自定义鼠标右键菜单
    datatables通过ajax调用渲染数据,怎么根据数据给td添加class
    【C++ Primer 第11章 练习答案】2. 关联容器概述
    【Leetcode】1. Two Sum
    【C++】拷贝构造函数(深拷贝,浅拷贝)详解
    【图的遍历】广度优先遍历(DFS)、深度优先遍历(BFS)及其应用
    【C++ Primer 第十三章】4. 拷贝控制示例
  • 原文地址:https://www.cnblogs.com/niguang/p/13913590.html
Copyright © 2011-2022 走看看