php小編香蕉在這裡為大家解答一個關於Go語言的問題:是否可以在Go中執行sudo指令而不將程式本身當作sudo運作?在Go語言中,透過使用os/exec套件中的Command函數,我們可以在程式中執行系統指令,包括sudo指令。但是,要注意的是,如果要在Go程式中執行sudo指令,程式本身必須具有sudo權限。否則,程式將無法成功執行sudo指令。因此,如果你希望在Go程式中執行sudo指令,確保程式本身俱有sudo權限是非常重要的。
該程式執行多個需要 sudo 權限的命令(例如 sudo dnf update)。由於程式應使用 go install
命令安裝,因此如果沒有使用者完成配置,它就無法作為 sudo 運行(據我所知)。
程式不會向使用者顯示輸出以保持輸出乾淨。為了顯示進程正在運行,它使用微調器庫中的微調器。
可以做這些事嗎?
go install
安裝的這是我希望程式碼執行的操作的簡化版本:
package main import ( "fmt" "os" "os/exec" "time" "github.com/briandowns/spinner" ) func main() { // Spinner to show that it's running s := spinner.New(spinner.CharSets[14], time.Millisecond*100) s.Start() // Somehow execute this with sudo _, err := exec.Command(os.Getenv("SHELL"), "-c", "dnf update -y").Output() // Stop the spinner and handle any error if err != nil { fmt.Printf("Err: %s", err) os.Exit(1) } s.Stop() // Finish fmt.Println("Success") }
_, err := exec.Command(os.Getenv("SHELL"), "-c", "sudo dnf update -y"). Output()
在此範例中,在您想要作為sudo 運行的命令之前添加sudo
,並且在運行程式後,將詢問sudo 的密碼,如果將此應用於範例程式碼,您將看不到密碼請求訊息,因為旋轉圖形會覆蓋它,但如果您在沒有旋轉圖形的情況下嘗試此操作,您可以看到它。 即使您沒有看到該訊息,如果您輸入正確的密碼並按 Enter 鍵,您的命令也會像這樣工作須藤。這樣,您就不需要以 sudo 身分執行應用程式。我已經使用它運行了類似的命令,並且它們有效。
以上是是否可以在 go 中運行 sudo 命令而不將程式本身作為 sudo 運行的詳細內容。更多資訊請關注PHP中文網其他相關文章!