如何用dotnetcore的sudo运行Linux命令?

时间:2016-12-12 07:57:44

标签: linux ubuntu

我正在使用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 service nginx restart等上述代码的sudo命令时,我运行程序,但程序显示控制台让我输入root密码。那么如何在不直接在控制台上输入密码的情况下执行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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

如果你想使用“sudo”,运行程序的用户应该是sudoers组。