C使用SSH.NET编写一个Linux操作客户端
目录
C#使用SSH.NET编写一个Linux操作客户端
1.前言
因为公司的网关与流媒体是基于Linux,如何查询网关与流媒体程序的运行日志如果直接操作服务器,存在着很大的风险。所以准备做一个基于winform的日志查询工具或者Linux运维工具,显得相对比较重要。
2.实现
2.1.开发工具
我这边使用的是VS2015,框架使用的是.NET Framework 4.6.1
2.2.引入dll
右键引用,选择“管理NuGet程序包”。
在浏览界面搜索框输入SSH.NET
选择SSH.NET后点击安装
到此开发包引入完成
2.3.操作封装
编写一个SSHClass类封装对服务器的操作方法。并且使用委托将操作返回信息返回到界面上
using Renci.SshNet;
using System;
namespace NetSSHOperation.Utils
{
public class SSHClass
{
public delegate void GetSSHLog(string log);
public static event GetSSHLog getSSHLog;
/// <summary>
/// SSH登录远程Linux服务器,并运行指令
/// </summary>
/// <param name="host">远程Linux服务器IP或域名</param>
/// <param name="username">账号名</param>
/// <param name="password">账号密码</param>
/// <param name="command">命令</param>
/// <returns></returns>
public static void RunSSHCommands(string host, string username, string password, string command)
{
if (command == null || command.Length == 0)
{
getSSHLog("指令为空!");
}
try
{
using (var client = new SshClient(host, username, password))
{
try
{
client.Connect();
string result = client.RunCommand(command).Execute();
getSSHLog(result);
client.Disconnect();
}
catch (Exception e)
{
getSSHLog(e.Message);
}
}
}
catch (Exception e)
{
getSSHLog(e.Message);
}
}
}
}
窗体类里面将SSHClass定义的事件注册
private void Form1_Load(object sender, EventArgs e)
{
SSHClass.getSSHLog += SSHClass_getSSHLog;
}
private void SSHClass_getSSHLog(string log)
{
richTextBox1.AppendText(log + "\r\n");
}
执行命令的方法直接调用SSHClass类里面的RunSSHCommands方法即可
private void btn_Command_Click(object sender, EventArgs e)
{
SSHClass.RunSSHCommands(txt_IP.Text, txt_LoginUser.Text, txt_LoginPassword.Text, textBox1.Text);
}