上次在使用Renci.SshNet組件時,每次調用Connect()方法,都回拋出個異常,aborted by software on host machine之類的。網上搜了好久,沒有說清楚的,有的說防火牆擋住了,也有說主機加密算法不支持等。後來爲了儘快實現功能,找了個收費組件ComponentPro,試用1個月。收費的就是6,沒報錯。git
目前軟件基本功能實現了,須要考慮長期使用的問題,因此又研究了一番。用SshNet組件鏈接個人阿里雲服務器就沒報錯,鏈接個人VMWare Ubuntu就報錯。一度懷疑人生。最後在GitHub上找到了開源項目本體,down下來以後引用竟然沒有以前的錯誤了,我也是醉了。附上SshNet本體地址:https://github.com/sshnet/SSH.NETgithub
那麼問題已經消除,可是SshNet組件的下載,尤爲是遍歷目錄中全部文件的下載,作的不是很方便,須要本身寫代碼。能夠參考這裏,https://benohead.com/downloading-files-directories-via-sftp-using-ssh-net/ 算法
爲了報告下載處理結果,主要是處理的文件夾和文件數量,又寫了個類:服務器
1 public class ProcessedData 2 { 3 private ArrayList processedDirList; 4 private ArrayList processedFileList; 5 //private int processedDirCount; 6 //private int processedFileCount; 7 8 public ProcessedData() { 9 processedDirList = new ArrayList(); 10 processedFileList = new ArrayList(); 11 } 12 13 public ArrayList GetProcessedDirList() { 14 return this.processedDirList; 15 } 16 17 public void AddToProcessedDirList(string dir) { 18 this.processedDirList.Add(dir); 19 } 20 21 public void AddToProcessedFileList(string file) { 22 this.processedFileList.Add(file); 23 } 24 25 public ArrayList GetProcessedFileList() { 26 return this.processedFileList; 27 } 28 29 public int ProcessedDirCount { get { return processedDirList.Count; } } 30 31 public int ProcessedFileCount { get { return processedFileList.Count; } } 32 }
對於目標服務器上的目錄和文件,某人說須要一個篩選,要否則可能要從幾百個文件裏面找,要瞎了,因此加了個Filter。原本考慮練習下正則,後來一想,好像並不須要,用String.Contains()方法就好了。目前是這個樣子了:ssh
輸入字符後:this
不要問爲何右邊有那麼大空白,由於之後還可能加拖拽拷貝功能,右邊也可能作個LargeIcon的目錄,因此先留着。阿里雲
這個軟件大體如此了,目前打算看看WPF,作一個服務器狀態監控和記錄查詢的較爲複雜的軟件。加密