我想使用一段命令行在Go中設(shè)置日期時(shí)間,但以下代碼失敗datetime := "2021-06-17 18:20:41.8"sudoPassword := "xxxxx"app := "echo"arg0 := sudoPasswordarg1 := "|sudo -S"arg2 := "date"arg3 := "-s"arg4 := "\"" + datetime + "\""cmd := exec.Command(app, arg0, arg1, arg2, arg3, arg4)有沒(méi)有正確的方法來(lái)做到這一點(diǎn)?像在Python中一樣自動(dòng)填寫(xiě)密碼os.system('echo %s|sudo -S %s' % (sudoPassword, command))
1 回答

慕尼黑8549860
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
代碼的一個(gè)問(wèn)題是,execs 直接命令而不使用包裝外殼,但您已經(jīng)構(gòu)造了一個(gè) shell 管道。不過(guò),您可以手動(dòng)指定一個(gè)用于 sudo 的 stdin 讀取器。exec.Command
cmd := exec.Command("sudo", "-S", "--", "cat", "/etc/shadow") cmd.Stdin = strings.NewReader("mysecretpassword") // your password fed directly to sudo's stdin
- 1 回答
- 0 關(guān)注
- 82 瀏覽
添加回答
舉報(bào)
0/150
提交
取消