如何使用read系统调用以交互方式获取密码

时间:2014-01-03 06:27:41

标签: linux unix terminal passwords go

如何在golang中使用系统调用实现以下命令行?

read -s -p "Enter Password: " mypassword

也就是说,在读取密码时要设置哪些附加选项以避免输入被回显并强制仅以交互方式提供输入。

感谢。

2 个答案:

答案 0 :(得分:4)

您可以使用包terminal.ReadPassword()中的terminal

func ReadPassword(fd int) ([]byte, error)

ReadPassword从没有本地回声的终端读取一行输入。这通常用于输入密码和其他敏感数据。返回的切片不包含\ n。

Package终端提供了处理终端的支持功能,这在UNIX系统中很常见。

更多信息:

答案 1 :(得分:-2)

您可以以交互方式使用expect命令:

expect "Enter Password:" {

send -- "$PASSWORD_VALUE\r"

例如 - 在脚本

下使用sftp时 sh expect.sh

PASSWORD_VALUE="password"

spawn -noecho sftp username@ip

expect "Enter Password:" {

send -- "$PASSWORD_VALUE\r"