我正在编写一个bash脚本,可能需要su来运行命令。像这样的东西 -
echo“安装XYZ系统” echo“请输入root密码 - ” su -c“java -cp ./Installer.jar com.company.FmMain; exit”
是否有办法使用su字符(星号或其他东西),以便用户在输入密码时有一些视觉反馈?
答案 0 :(得分:1)
您必须先在su
之外的密码中读取密码。有关使用read
完成此操作的示例,请参阅问题How do I echo stars (*) when reading password with `read`?。
然后,您必须使用expect
将此密码传递给su
提供的密码提示。有关做类似事情的示例,请参阅问题How do I use expect to connect via ssh to a system and change the password of the host system?。
答案 1 :(得分:1)
我不建议在Linux中使用屏蔽密码,这违反了预期的正常行为,并且可能会使用户感到困惑,特别是如果他们是经验丰富的Linux用户。读取密码的标准方法是在接受密码之前关闭回显和禁用特殊字符(如转义序列等)的处理(这通常通过设置终端属性 - tcsetattr等来完成),这就是su的工作方式。 / p>
有一些标准的库函数,比如getpass,它可以帮到你: http://www.gnu.org/s/hello/manual/libc/getpass.html
尝试实现自己的方法可能会带来潜在的安全隐患。我强烈警告这个。