我有一个期望脚本,每次需要密码时都会使用交互。预期的程序会自动多次要求输入密码。有没有一种方法只需输入密码一次,然后期望下次要求密码时使用它?有没有安全的方法来做到这一点?我不希望将密码保存在计算机上的文件中,因为这不安全。
答案1
在安全存储密码方面,您可以使用openssl
生成密码的 MD5 哈希值,然后将后续输入与其进行比较。这类似于/etc/passwd
存储密码的方式:
openssl passwd -1 -salt j7bJUIHI YOURSECRETPASSWORD
该命令将为您提供一个字符串,您可以将其存储在期望脚本中。当用户输入您要使用的密码时
openssl passwd -1 -salt j7bJUIHI $INPUT
并与存储的字符串进行比较。如果它们匹配,则 $INPUT 就是正确的密码。该-salt
字符串可以是任何内容,但需要在调用之间进行修复才能openssl
正确进行比较。
如果您需要找回原始密码,则不能使用此方法。查看此条目,了解有关该主题的更一般性讨论:在 Shell 脚本中隐藏密码
抱歉,第二次阅读此内容时,我发现我误解了您的问题。看看这里的答案:https://stackoverflow.com/questions/681928/how-can-i-make-an-expect-script-prompt-for-a-password。它看起来像是您想要的解决方案。