Heim >Backend-Entwicklung >Golang >Ist es möglich, Sudo-Befehle in Go auszuführen, ohne das Programm selbst als Sudo auszuführen?
php-Editor Banana ist hier, um eine Frage zur Go-Sprache zu beantworten: Ist es möglich, Sudo-Befehle in Go auszuführen, ohne das Programm selbst als Sudo auszuführen? In der Go-Sprache können wir mithilfe der Command-Funktion im os/exec-Paket Systembefehle, einschließlich sudo-Befehle, im Programm ausführen. Allerdings ist zu beachten, dass, wenn Sie Sudo-Befehle in einem Go-Programm ausführen möchten, das Programm selbst über Sudo-Berechtigungen verfügen muss. Andernfalls kann das Programm den sudo-Befehl nicht erfolgreich ausführen. Wenn Sie Sudo-Befehle in einem Go-Programm ausführen möchten, ist es daher sehr wichtig sicherzustellen, dass das Programm selbst über Sudo-Berechtigungen verfügt.
Dieses Programm führt mehrere Befehle aus, die Sudo-Berechtigungen erfordern (z. B. Sudo dnf update). Da das Programm mit dem Befehl go install
installiert werden sollte, kann es (soweit ich weiß) nicht als sudo ausgeführt werden, ohne dass ein Benutzer die Konfiguration abschließt.
Das Programm zeigt dem Benutzer die Ausgabe nicht an, um die Ausgabe sauber zu halten. Um anzuzeigen, dass ein Prozess ausgeführt wird, verwendet er Spinner aus der Spinner-Bibliothek.
Kann ich diese Dinge tun?
go install
Hier ist eine vereinfachte Version dessen, was der Code tun soll:
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()
Fügen Sie in diesem Beispiel sudo
vor dem Befehl hinzu, den Sie als sudo ausführen möchten. Nach dem Ausführen des Programms wird sudo nach dem Kennwort gefragt. Wenn Sie dies auf den Beispielcode anwenden, wird die Meldung zur Kennwortanforderung aufgrund der Rotation nicht angezeigt Die Form überschreibt sie, aber wenn Sie dies versuchen, ohne die Form zu drehen, können Sie sie sehen. Auch wenn Sie die Meldung nicht sehen, funktioniert Ihr Befehl in sudo folgendermaßen, wenn Sie das richtige Passwort eingeben und die Eingabetaste drücken. Auf diese Weise müssen Sie die Anwendung nicht als sudo ausführen. Ich habe ähnliche Befehle damit ausgeführt und sie funktionieren.
Das obige ist der detaillierte Inhalt vonIst es möglich, Sudo-Befehle in Go auszuführen, ohne das Programm selbst als Sudo auszuführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!