Как получить спецификации системы в ядре .net на Linux - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь получить системную информацию о Linux.Моя текущая реализация работает для Windows, но не полностью для Linux.В моем случае я использую Debian 9.8 минимальный с .NET CORE 2.2.Важные сведения о: процессоре, жестких дисках, памяти.Что-то очень жуткое, что в linux debian 9 он говорит мне, что OSPlatform - это Windows.Я надеюсь, что кто-то может дать мне некоторые идеи.

Я написал небольшую библиотеку для Windows, которая использует kernel32.dll.Ядро kernel32.dll мы не можем использовать в Linux, поэтому мне нужен другой способ реализации Linux для получения информации (процессор, жесткие диски, память).

1 Ответ

0 голосов
/ 04 апреля 2019

Я считаю, эта проблема уже открыта в репозитории ядра .Net GitHub. Поэтому я считаю, что нет .NET API ядра, который может помочь вам достичь этого.

Есть один обходной путь, о котором я могу подумать. У вас есть возможность запускать команды bash из кода C #, как показано ниже ( ссылка ):

public static class ShellHelper
{
    public static string Bash(this string cmd)
    {
        var escapedArgs = cmd.Replace("\"", "\\\"");

        var process = new Process()
        {
            StartInfo = new ProcessStartInfo
            {
                FileName = "/bin/bash",
                Arguments = $"-c \"{escapedArgs}\"",
                RedirectStandardOutput = true,
                UseShellExecute = false,
                CreateNoWindow = true,
            }
        };
        process.Start();
        string result = process.StandardOutput.ReadToEnd();
        process.WaitForExit();
        return result;
    }
}

Затем вы можете запустить команду bash, чтобы получить вывод в формате HTML ( ссылка ):

var output = "sudo lshw -html > hardwareinfo.html".Bash();

lshw создаст файл HTML по указанному пути. У вас есть возможность как-то проанализировать эту информацию, чтобы получить информацию.

Надеюсь, это работает для вас.

...