标签:
今天研究了下怎么用C#程序通过SSH连接远程的Linux系统,找到了SharpSSH,下载下来体验了一下:
1.下载SharpSSH
SharpSSH的主页地址:http://www.tamirgal.com/blog/page/SharpSSH.aspx
这个页面中,在“Download”(下载)标题下,可以选择直接下载编译好的程序或是直接下载源码
下载程序:SharpSSH-1.1.1.13.bin.zip,SourceForge上的 下载地址
下载源码:SharpSSH-1.1.1.13.src.zip,SourceForge上的 下载地址
2.使用直接下载的二进制程序
直接下载的二进制程序,包括3个DLL文件和1个EXE文件,双击EXE文件就可以运行了
输入13,按下回车键,即可实现输入主机IP地址、用户名、登陆密码登陆一台Linux主机
我打开VMware虚拟机,启动一个RedHat,它的地址我配的是192.168.8.123,用户名为oracle,密码为1234
操作如下图:
进入主机后,输入exit命令关闭SSH连接
3.自己编写C#程序调用库文件实现这一功能
SharpSSH的源码注释和示例都做得很详细,我参考了里面的内容,写了下面这段代码,通过调用SharpSSH库实现了SharpSSH程序中的功能13:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tamir.SharpSsh; namespace SSHTest { class Program { static void Main(string[] args) { try { string host = "192.168.8.123"; string user = "oracle"; string pass = "1234"; Console.WriteLine("主机地址: {0}", host); Console.WriteLine("登陆用户: {0}", user); Console.WriteLine("登录密码: {0}", pass); SshShell shell = new SshShell(host, user); shell.Password = pass; shell.RedirectToConsole(); Console.Write("正在连接..."); shell.Connect(); Console.WriteLine("连接完毕!"); Console.WriteLine("========="); while (shell.ShellOpened) { System.Threading.Thread.Sleep(500); } Console.WriteLine("========="); Console.WriteLine("断开连接中..."); shell.Close(); Console.WriteLine("断开完毕"); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.Write("按任意键继续..."); Console.ReadKey(); Console.WriteLine("\b"); Environment.Exit(0); } } }
运行这段代码前,需要人工手动添加一个DLL文件引用:Tamir.SharpSSH(虽然有三个DLL,但本段代码只需要引用1个)
进入该主机后,我又执行了一个命令:“ls -ls”,然后再执行的exit命令,运行结果如下图:
附:编译源码
下载下来的源码包SharpSSH-1.1.1.13.src.zip可以通过下面的方法编译
我的环境是:“Microsoft .Net Framwork 4.5.50938”,编码环境是“Visual Studio 2012 Ultimate”
下载下来的源码,解决方案(SLN文件)的图标是这样的:
看来版本比较古老啊,所以再用VS2012打开的时候,会出现下面这个“复查项目和解决方案更改”提示框,单击“确定”按钮开始升级:
这个时候还会提示“安全警告”,两个程序集“SharpSSH”和“Examples”各会提示一次,全部点击“确定”按钮即可
升级完后会生成一个升级报告,“UpgradeLog.htm”
SharpSSH的代码可以直接编译运行,从解决方案的属性来看,这是个单启动项目,启动项目的程序集是“Examples”
END
标签:
原文地址:http://my.oschina.net/Tsybius2014/blog/372337