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

3.界面效果

Guess you like

Origin blog.csdn.net/qq_17486399/article/details/117435385