c# 使用ssh.net 上傳文件


  在ssh.net 客戶端實例下無法普通用戶切換到su root  超級用戶,原因是tty 的不支持,具體原因未查, 連接時用超級用戶,問題解決

使用ssh.net  能實現遠程命令,  使用其中的sftp 文件傳輸類,也可實現上傳下載

sftp連接

   Renci.SshNet.SshClient ssh;
        Renci.SshNet.SftpClient sftp;
        public void SftpConnect(string addr, int port, string user,string pass)
        {
             sftp = new Renci.SshNet.SftpClient(addr,port,user, pass);
        }

sftp上傳

  public void UploadData(string filename,string linuxfilepath)
        {            
            sftp.Connect();
            FileInfo fi = new FileInfo(filename);
            var allLength = fi.Length;
            sftp.UploadFile(new System.IO.FileStream(fi.FullName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, System.IO.FileShare.ReadWrite), linuxfilepath/* "/home/sindrol/aa.zip"*/, (pro) => { Console.WriteLine((pro * 1.0d / allLength * 1.0d).ToString("P")); });
            Console.WriteLine("finished.");
            while (true)
            {
                System.Threading.Thread.Sleep(500);
            }
        }

注意:報錯failtrue

UploadFile 函數中 文件目錄是包含文件名的目錄,不是文件夾目錄linuxfilepath 像這個 /* "/home/sindrol/aa.zip"*/ 

加了異常處理的方法
  public bool SftpConnect(string addr, int port, string user,string pass,out string mess)
        {
            bool result = false;
            try
            {
                //  using (sftp = new Renci.SshNet.SftpClient(addr, port, user, pass))
                sftp = new Renci.SshNet.SftpClient(addr, port, user, pass);
                    sftp.Connect();
                    mess = "連接成功";
                    return result = true;
            }
            catch (Exception ex)
            {
                mess = "連接失敗,錯誤:"+ ex.Message;
                return result = false;
            }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM