有没有办法看到为su密码input的字符

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

echo“安装XYZ系统”echo“请inputroot密码 – ”su -c“java -cp ./Installer.jar com.company.FmMain; exit”

有没有办法让su打印字符(星号或什么),所以用户有一些视觉反馈,因为他们input密码?

您必须先将密码读入变量中,而不是su 。 看到这个问题当用`read`读取密码时,我如何回应星号(*)? 为了使用read来完成这个例子。

然后,您将不得不使用expect将密码传递到su提供的密码提示。 查看问题如何使用expect通过ssh连接到系统并更改主机系统的密码? 例如做类似的事情。

我不会推荐在Linux中掩盖密码,它违背了预期的正常行为,并可能会混淆用户,特别是如果他们是有经验的Linux用户。 读取密码的标准方式是在接受密码前(这通常是通过设置终端属性 – tcsetattr等来完成的)关闭回显并禁用特殊字符(如转义序列等)的处理,这是行之有效的方法。

有一些标准的库函数,比如getpass,它可以帮助你: http : //www.gnu.org/s/hello/manual/libc/getpass.html

试图实现你自己的做法有潜在的安全隐患。 我强烈警告说要这样做。