登录
首页 >  Golang >  Go问答

自动输入要求的密码

来源:stackoverflow

时间:2024-03-04 08:21:28 433浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《自动输入要求的密码》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

我正在运行一个 go 程序,它要求我输入密码。

脚本本身是这样完成的:

fmt.Print("Enter password: ")
bytePassword, err := terminal.ReadPassword(int(syscall.Stdin))
if err != nil {
    return
}
password := string(bytePassword)

terminal 来自 golang.org/x/crypto/ssh/terminalsyscall 来自 syscall 模块。

我尝试运行以下脚本:

echo“我的密码”| ./myscript

但它不起作用(它以正常方式起作用,当我在询问时手动输入密码时)

如何在这里自动输入密码?我以为我做得对,但显然不是。


解决方案


以下是我如何使用 bash 脚本中的 expect 来实现此操作:

#!/bin/bash

pass=secret_pass
cmnd=your_command

expect << eof
spawn  $cmnd
expect {
    "assword:" { send "$pass\n" }
}
eof

这是我的 ssh_yes 项目的一个工作示例:

ssh_yes() {
assword='
    "assword:" { %s }
    "$ "       { send "exit\n" }
'
[[ $2 ]] && pass="send \"$2\n\"" || pass="exit"
printf -v assword "$assword" "$pass"
expect <<  EOF
spawn  ssh $1
expect {
    "yes/no" {
        send "yes\n"
        expect { $assword }
    }
    $assword
}
EOF
}

理论要掌握,实操不能落!以上关于《自动输入要求的密码》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>