如何使bash脚本要求input密码?
我想用密码保证程序的执行。
我该怎么做bash?
stty_orig=`stty -g` # save original terminal setting. stty -echo # turn-off echoing. read passwd # read the password stty $stty_orig # restore terminal setting.
这个命令将从标准input读入var pwd (禁止echo):
IFS= read -s -p Password: pwd
取消设置IFS将允许在密码中引入和结尾的空白(在某些环境中可能会支持这种空白,所以最好在脚本input用户凭据期间支持它)
要validation前导/尾随空白处理是否正确,您可以使用:
echo -n "$pwd" | hexdump -C
注意:不要使用真正的密码,因为它会转储到控制台!
HT:Ron DuPlain提供关于IFS未定的附加信息。
如果你需要抓取一个密码来作为参数提供给一个程序,那么独angular兽build议closures回声是很好的。
在脚本中进行passwd检查不起作用 – 如果用户可以执行bash脚本,则他们也有权读取它并查看密码。
如果你想只允许拥有passwd的人运行一个程序,那么安全的方法是创build一个拥有该程序的新用户帐户,并有一个使用“sudo”作为该用户运行该程序的脚本 – 它会提示用户以一种安全的方式passwd。