Go 作为另一个用户执行
如何在GO中与另一个用户一起执行shell命令,并从中获得输出 我试过:Go 作为另一个用户执行,go,exec,Go,Exec,如何在GO中与另一个用户一起执行shell命令,并从中获得输出 我试过: cmd :=exec.Command("sudo","su",username, "-c",command) stdout, err := cmd.StdoutPipe() CheckErr(err) cmd.Run() 没有输出。有人知道怎么做吗?您需要检查运行cmd的输出。运行并使用stdout获得输出比使用管道更简单 cmd :=exec.Command("sudo","su",username, "-c",com
cmd :=exec.Command("sudo","su",username, "-c",command)
stdout, err := cmd.StdoutPipe()
CheckErr(err)
cmd.Run()
没有输出。有人知道怎么做吗?您需要检查运行cmd的输出。运行并使用stdout获得输出比使用管道更简单
cmd :=exec.Command("sudo","su",username, "-c",command)
cmd.Stderr = os.Stdout
cmd.Stdout = os.Stdout
err := cmd.Run()
CheckErr(err)
这应该可以让您看到错误,以便您可以找出阻止sudo的原因。您的用户是否允许在没有密码的情况下执行
sudo
?是的,用户(用户名和运行程序的用户)都在sudoer列表中,而sudoer列表中的用户通常是不够的。您通常仍然需要提供密码。在编程方面,这通常需要设置--prompt
和--stdin
选项。这是一个进步,但不幸的是,我现在对sudo
的理解不够深入。如果您在shell中键入该命令,该命令是否有效?我刚刚阅读了手册页(),我想知道它在进程中运行时是否无法获取用户用户名的密码?@miltonb:sudo有-S
选项在stdin上获取密码。