因为公司的网关与流媒体是基于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;
///
/// SSH登录远程Linux服务器,并运行指令
///
/// 远程Linux服务器IP或域名
/// 账号名
/// 账号密码
/// 命令
///
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 + "rn");
}
执行命令的方法直接调用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.界面效果



