using NetPanel.Help; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NetPanel.Bl { public class ExecuteBl { public static string Exec(string command) { if (OperatingSystem.IsWindows()) // 检查当前操作系统是否为 Windows { return ExecuteCommandOnWindows(command); } else if (OperatingSystem.IsLinux()) // 检查当前操作系统是否为 Linux { return ExecuteCommandOnLinux(command); } else { return ""; } } /// /// win 执行命令 /// /// /// private static string ExecuteCommandOnWindows(string command) { using var process = new Process { StartInfo = new ProcessStartInfo { FileName = "cmd.exe", Arguments = "/C " + command, RedirectStandardOutput = true, RedirectStandardError = true, //StandardErrorEncoding = Encoding.UTF8, //StandardOutputEncoding = Encoding.UTF8, UseShellExecute = false, CreateNoWindow = true } }; process.Start(); string output = process.StandardOutput.ReadToEnd(); string error = process.StandardError.ReadToEnd(); process.WaitForExit(); if (output.IsNull()) { return error; } return output; } /// /// linux 执行命令 /// /// private static string ExecuteCommandOnLinux(string command) { using var process = new Process { StartInfo = new ProcessStartInfo { FileName = "/bin/bash", Arguments = "-c \"" + command + "\"", RedirectStandardOutput = true, RedirectStandardError = true, //StandardErrorEncoding = Encoding.UTF8, //StandardOutputEncoding = Encoding.UTF8, UseShellExecute = false, CreateNoWindow = true } }; process.Start(); string output = process.StandardOutput.ReadToEnd(); string error = process.StandardError.ReadToEnd(); process.WaitForExit(); if (output.IsNull()) { return error; } return output; } } }