Rumah >pembangunan bahagian belakang >Golang >Adakah mungkin untuk menjalankan perintah sudo secara berterusan tanpa menjalankan program itu sendiri sebagai sudo
editor php Banana ada di sini untuk menjawab soalan tentang bahasa Go: Adakah mungkin untuk menjalankan perintah sudo dalam Go tanpa menjalankan program itu sendiri sebagai sudo? Dalam bahasa Go, dengan menggunakan fungsi Perintah dalam pakej os/exec, kita boleh melaksanakan perintah sistem, termasuk perintah sudo, dalam program. Walau bagaimanapun, perlu diingatkan bahawa jika anda ingin melaksanakan perintah sudo dalam program Go, program itu sendiri mesti mempunyai kebenaran sudo. Jika tidak, program tidak akan berjaya melaksanakan perintah sudo. Oleh itu, jika anda ingin melaksanakan perintah sudo dalam program Go, adalah sangat penting untuk memastikan program itu sendiri mempunyai kebenaran sudo.
Program ini menjalankan berbilang arahan yang memerlukan kebenaran sudo (seperti kemas kini sudo dnf). Memandangkan program harus dipasang menggunakan arahan go install
, ia tidak boleh dijalankan sebagai sudo tanpa pengguna melengkapkan konfigurasi (setahu saya).
Program ini tidak memaparkan output kepada pengguna untuk memastikan output bersih. Untuk menunjukkan bahawa proses sedang berjalan, ia menggunakan pemutar daripada perpustakaan pemutar.
Bolehkah saya melakukan perkara-perkara ini?
go install
Berikut ialah versi ringkas tentang perkara yang saya mahu kod lakukan:
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()
Dalam contoh ini, tambahkan sudo
sebelum arahan yang anda mahu jalankan sebagai sudo dan selepas menjalankan program, sudo akan diminta untuk kata laluan, Jika anda menggunakan ini pada kod contoh, anda tidak akan melihat mesej permintaan kata laluan kerana Berputar bentuk akan menimpanya, tetapi jika anda mencuba ini tanpa memutar bentuk anda boleh melihatnya. Walaupun anda tidak melihat mesej, jika anda memasukkan kata laluan yang betul dan tekan Enter, arahan anda akan berfungsi seperti ini dalam sudo. Dengan cara ini anda tidak perlu menjalankan aplikasi sebagai sudo. Saya telah menjalankan arahan serupa menggunakannya dan ia berfungsi.
Atas ialah kandungan terperinci Adakah mungkin untuk menjalankan perintah sudo secara berterusan tanpa menjalankan program itu sendiri sebagai sudo. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!