golangの日記

Go言語を中心にプログラミングについてのブログ

Go言語 sudo のパスワードを Stdin から入力する

golang.png


exec.Command で sudo のパスワードを Stdin から入力

package main

import (
    "fmt"
    "os"
    "os/exec"
    "strings"
)

func main() {
    command := []string{"sudo", "-S", "chown", "-R", "root:root", "foo.txt"}
    cmd := exec.Command(command[0], command[1:]...)

    // Stdinからパスワードを入力
    cmd.Stdin = strings.NewReader("PASSWORD" + "\n")
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr

    if err := cmd.Run(); err != nil {
        log.Fatal(err)
    }
}

ちゃんと変更されてる 画像