上次在使用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,作一个服务器状态监控和记录查询的较为复杂的软件。加密