2

我正在编写一个可能需要 su 来运行命令的 bash 脚本。像这样的东西-

echo "安装XYZ系统" echo "请输入root密码-" su -c "java -cp ./Installer.jar com.company.FmMain ; exit"

有没有办法让 su 打印字符(星号或其他东西),以便用户在输入密码时有一些视觉反馈?

4

2 回答 2

1

您必须首先将密码读入变量中,在su. 请参阅问题如何在使用“read”读取密码时回显星号 (*)?read有关使用来完成此操作的示例。

然后,您必须使用expect将此密码传递给出现的密码提示su。请参阅问题如何使用 expect 通过 ssh 连接到系统并更改主机系统的密码?做类似事情的例子。

于 2012-08-30T21:34:59.853 回答
1

我不建议在 Linux 中使用掩码密码,因为它违背了预期的正常行为,并且可能会使用户感到困惑,特别是如果他们是有经验的 Linux 用户。读取密码的标准方法是在接受密码之前关闭回显并禁用对特殊字符(如转义序列等)的处理(这通常通过设置终端属性 - tcsetattr 等来完成),这就是 su 的工作方式。

有标准库函数,例如 getpass 可以为您执行此操作: http ://www.gnu.org/s/hello/manual/libc/getpass.html

尝试实现您自己的方法会带来潜在的安全隐患。我强烈警告这一点。

于 2012-08-31T02:59:55.140 回答