원격 서버의 자원 상황 가져오기
16203 단어 서버
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 using System.Management;
7 using System.Diagnostics;
8 using Newtonsoft.Json;
9 using Newtonsoft.Json.Linq;
10
11 namespace GH.IMS
12 {
13 public class SystemMonit
14 {
15 private ManagementScope Ms;
16
17 public SystemMonit()
18 {
19 Ms = new ManagementScope();
20 }
21
22 public SystemMonit(String ip, String userName, String password)
23 {
24 ConnectionOptions Conn = new ConnectionOptions();
25 Conn.Username = userName;
26 Conn.Password = password;
27 Ms = new ManagementScope(String.Format("\\\\{0}\\root\\cimv2", ip), Conn);
28
29 Ms.Connect();
30 }
31
32
33 public JArray GetLogicalDisk()
34 {
35 return GetInfoFromWMI("Win32_LogicalDisk", "DeviceID,Size,FreeSpace");
36 }
37
38 public JArray GetNAConfigurationInfo()
39 {
40 return GetInfoFromWMI("Win32_NetworkAdapterConfiguration",
41 "IPAddress,DefaultIPGateway,DNSServerSearchOrder,IPSubnet,MACAddress");
42 }
43
44
45 public JArray GetProcessorInfo()
46 {
47 return GetInfoFromWMI("Win32_Processor",
48 "Name,Family,L2CacheSize,Manufacturer,MaxClockSpeed,ProcessorId,LoadPercentage");
49 }
50
51 public JArray GetPhysicalMemoryInfo()
52 {
53 JArray jArrayAvailable = GetInfoFromWMI("Win32_PerfRawData_PerfOS_Memory",
54 "AvailableMBytes");
55 JArray jArrayTotal = GetInfoFromWMI("Win32_LogicalMemoryConfiguration",
56 "TotalPhysicalMemory");
57 JArray result=new JArray();
58 result.Add(jArrayAvailable);
59 result.Add(jArrayTotal);
60 return result;
61 }
62 /// <summary>
63 /// wmi
64 /// </summary>
65 /// <param name="name"> </param>
66 /// <param name="fields"> , "," </param>
67 /// <returns></returns>
68 public JArray GetInfoFromWMI(String name, String fields)
69 {
70 JArray jarray = new JArray();
71 try
72 {
73 ManagementObjectCollection mocObj =
74 new ManagementObjectSearcher(Ms,
75 new ObjectQuery(
76 String.Format("Select {0} From {1}", fields, name))).
77 Get();
78 JObject jObj;
79 foreach (ManagementObject mo in mocObj)
80 {
81 jObj = new JObject();
82 foreach (String fieldName in fields.Split(','))
83 {
84 if (mo[fieldName] != null)
85 jObj.Add(new JProperty(fieldName, mo[fieldName]));
86 }
87 jarray.Add(jObj);
88 }
89 }
90 catch
91 {
92 jarray = null;
93 }
94 return jarray;
95 }
96
97 private enum Unit { B, KB, MB, GB, ER }
98 private string FormatBytes(double bytes)
99 {
100 int unit = 0;
101 while (bytes > 1024)
102 {
103 bytes /= 1024;
104 ++unit;
105 }
106 return string.Format("{0} {1}",
107 bytes.ToString("F"),
108 ((Unit)unit).ToString());
109 }
110 }
111 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
집 서버 설계 (하드웨어 편)자신의 Redmine이나 ownCloud를 운용하기 위해 사쿠라 VPS, DigitalOcean, OpenShift 등을 놀랐습니다만, 침착 해 왔으므로 현상을 정리하고 싶습니다. 먼저 하드웨어 구성을 정리합니다. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.