我正在Ubuntu 16.04上开发一个使用dotnetcore执行一些简单命令的小项目。这是我用来运行命令的代码

public void ExecuteCommand(string command)
{
    Process proc = new Process();
    proc.StartInfo.FileName = "/bin/bash";
    proc.StartInfo.Arguments = "-c \" " + command + " \"";
    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.RedirectStandardOutput = true;
    proc.Start();

    while (!proc.StandardOutput.EndOfStream)
    {
        Console.WriteLine(proc.StandardOutput.ReadLine());
    }
}

当我试图将sudo命令与上述代码(如sudo service nginx restart)一起使用时,我运行了程序,但程序显示了控制台,供我输入根密码。那么,如何在不直接在控制台上输入密码的情况下执行sudo命令呢?
我的计算机上的Dotnetcore信息
.NET Command Line Tools (1.0.0-preview2-1-003177)

Product Information:
 Version:            1.0.0-preview2-1-003177
 Commit SHA-1 hash:  a2df9c2576

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  16.04
 OS Platform: Linux
 RID:         ubuntu.16.04-x64

最佳答案

您可以以根用户身份运行程序,也可以将用户添加到sudo组。
或者打开sudoers文件:sudo visudo并通过添加行添加用户所有权限
username ALL = NOPASSWD : ALL

关于linux - 如何从dotnetcore用sudo运行Linux命令?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41096387/

10-16 17:32