情况:
我想从stdin
控制台获得密码输入-而不是回显用户键入的内容。Go中是否有可与getpasswd
功能相媲美的功能?
我尝试过的东西:
我尝试使用syscall.Read
,但它会回显输入的内容。
发布于 2010-01-26 11:37:21
您可以通过执行stty -echo
来关闭echo,然后在读取口令后执行stty echo
来重新打开它
发布于 2015-09-25 02:31:09
下面是完成这项任务的最好方法之一。首先通过go get golang.org/x/term
获取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
}
发布于 2012-11-15 16:07:33
刚在#go-nuts上看到了一封邮件。有人写了一个非常简单的go包来使用。你可以在这里找到它:https://github.com/howeyc/gopass
大概是这样的:
package main
import "fmt"
import "github.com/howeyc/gopass"
func main() {
fmt.Printf("Password: ")
pass := gopass.GetPasswd()
// Do something with pass
}
https://stackoverflow.com/questions/2137357
复制相似问题