使用的引用包为sharpssh:下载地址https://sourceforge.net/projects/sharpssh/
下载bin,解压后会有4个文件Tamir.SharpSSH.dll,sharpSshTest.exe,Org.Mentalis.Security.dll,DiffieHellman.dll
实现方法:
功能类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Tamir.SharpSsh; namespace testSSH { class CPUInfo { public string station_name;//工作站名 public string station_address;//工作站ip地址 public string CPU_frequency;//频率 public string CPU_usage_rate;//利用率 public string CPU_rev;//风扇转速 public string CPU_temper;//温度 public string CPU_require_date;//参数获取时间 public void set(string name,string address,string fre,string usage,string require) { this.station_name = name; this.station_address = address; this.CPU_frequency = fre; this.CPU_usage_rate = usage; this.CPU_require_date = require; } public static string ssh_conn(string ip, string root, string pass, string command) { SshStream ssh = new SshStream(ip, root, pass); ssh.Prompt = "#"; ssh.RemoveTerminalEmulationCharacters = true; //Writing to the SSH channel string response = ssh.ReadResponse(); ssh.Write(command); ssh.Flush(); ssh.Write("/n"); //Reading from the SSH channel response = ssh.ReadResponse(); ssh.Close(); return response; } public static string cpu_fre(String ip, String user, String password) { string cpu_f = ""; String str = ssh_conn(ip, user, password, "psrinfo -v"); System.Console.WriteLine(str); var liststr = str.Split('\n'); List<string> mylist = new List<string>(); foreach (var item in liststr) { mylist.Add(item); } //System.Console.WriteLine("cmd respond length:" + mylist.Count); String str1 = mylist[4]; var liststr1 = str1.Split(new Char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); List<string> mydata = new List<string>(); foreach (var item in liststr1) { mydata.Add(item); } // System.Console.WriteLine("data string length:" + mydata.Count); // System.Console.WriteLine(mydata[3]); cpu_f = mydata[3]; return cpu_f+"MHZ"; } public static string cpu_use(String ip, String user, String password) { string cpu_u = ""; String str = ssh_conn(ip, user, password, "mpstat"); System.Console.WriteLine(str); var liststr = str.Split('\n'); List<string> mylist = new List<string>(); foreach (var item in liststr) { mylist.Add(item); } //System.Console.WriteLine("cmd respond length:" + mylist.Count); String str1 = mylist[3]; var liststr1 = str1.Split(new Char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); List<string> mydata = new List<string>(); foreach (var item in liststr1) { mydata.Add(item); } //System.Console.WriteLine("data string length:" + mydata.Count); //System.Console.WriteLine(mydata[15]); int dl = Convert.ToInt32(mydata[15]); dl=100 - dl; cpu_u = dl.ToString(); return cpu_u+"%"; } } }主类
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace testSSH { class Program { static void Main(string[]args) { string cpu_use = CPUInfo.cpu_use("地址", "user", "密码"); string cpu_fre = CPUInfo.cpu_fre("地址", "user", "密码"); System.Console.WriteLine("CPU 利用率:"+cpu_use); System.Console.WriteLine("CPU频率:"+cpu_fre); System.Console.Read(); } } } 在获取信息的方法中,根据输入的shell命令不同,对获得的数据进行字符串的 Split 处理,最后得到自己想要的数据。
