如何通过 .NETCore 获取 Linux,Mac 的硬件信息?
生活随笔
收集整理的這篇文章主要介紹了
如何通过 .NETCore 获取 Linux,Mac 的硬件信息?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
咨詢區(qū)
Pascal Jackson:
請問我如何通過 .NET Core 去識別 Linux/Mac 電腦上的硬件信息?在 windows 上我可以通過 System.Management 下 WMI Query 很容易獲取,比如下面的代碼:
ManagementObjectSearcher?searcher?=?new?ManagementObjectSearcher("select?*?from?Win32_Processor");回答區(qū)
Barr J:
其實很簡單,你可以用 .net core 與它們的 shell 工具交互就可以了。
Linux 機器
可以先看看如果用 bash 命令獲取 Process Id, Machine id, version 等等,比如下面這些。
1.?"LinuxModel":?"cat?/sys/class/dmi/id/product_name" 2.?"LinuxModelVersion":?"cat?/sys/class/dmi/id/product_version" 3.?"LinuxProcessorId":?"dmidecode?-t?processor?|?grep?-E?ID?|?sed?'s/.*:?//'?|?head?-n?1" 4.?"LinuxFirmwareVersion":?"cat?/sys/class/dmi/id/bios_version", 5.?"LinuxMachineId":?"cat?/var/lib/dbus/machine-id"接下來寫一個 擴展方法 來搞定。
public?static?string?Bash(this?string?cmd){string?result?=?String.Empty;try{var?escapedArgs?=?cmd.Replace("\"",?"\\\"");using?(Process?process?=?new?Process()){process.StartInfo?=?new?ProcessStartInfo{FileName?=?"/bin/bash",Arguments?=?$"-c?\"{escapedArgs}\"",RedirectStandardOutput?=?true,UseShellExecute?=?false,CreateNoWindow?=?true,};process.Start();result?=?process.StandardOutput.ReadToEnd();process.WaitForExit(1500);process.Kill();};}catch?(Exception?ex){//Logger.ErrorFormat(ex.Message,?ex);}return?result;}然后你就可以這樣使用。
var?output?=?"ps?aux".Bash();Mac 機器
你可以借助 ManagementClass 類去獲取,參考如下代碼:
public?static?void?Main(string[]?args){System.Management.ManagementClass?mc?=?default(System.Management.ManagementClass);ManagementObject?mo?=?default(ManagementObject);mc?=?new?ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObjectCollection?moc?=?mc.GetInstances();foreach?(var?mo?in?moc){if?(mo.Item("IPEnabled")?==?true){Adapter.Items.Add("MAC?"?+?mo.Item("MacAddress").ToString());}}}點評區(qū)
確實是一個好辦法,在 Linux 上可以和 bash 交互,在 Windows 上也可以同 cmd,powershell 交互,想獲取什么信息就獲取信息,學習了。
總結
以上是生活随笔為你收集整理的如何通过 .NETCore 获取 Linux,Mac 的硬件信息?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 用IrisSkin4.dll美化
- 下一篇: Linux下部署Kubernetes+K