情况:
我想从stdin控制台获取密码条目-不回显用户键入的内容。有什么可以与getpasswdGo 中的功能相媲美的吗?
stdin
getpasswd
我试过的:
我尝试使用syscall.Read,但它与输入的内容相呼应。
syscall.Read
您可以通过执行stty -echo关闭回显,然后stty echo在读入密码后重新打开来执行此操作
stty -echo
stty echo
以下是完成它的最佳方法之一。首先term通过以下方式获取包裹go get golang.org/x/term
term
go get golang.org/x/term
package main import ( "bufio" "fmt" "os" "strings" "syscall" "golang.org/x/term" ) func main() { username, password, _ := credentials() fmt.Printf("Username: %s, Password: %s\n", username, password) } func credentials() (string, string, error) { reader := bufio.NewReader(os.Stdin) fmt.Print("Enter Username: ") username, err := reader.ReadString('\n') if err != nil { return "", "", err } fmt.Print("Enter Password: ") bytePassword, err := term.ReadPassword(int(syscall.Stdin)) if err != nil { return "", "", err } password := string(bytePassword) return strings.TrimSpace(username), strings.TrimSpace(password), nil }
http://play.golang.org/p/l-9IP1mrhA