在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; } }