我正在写一个可能需要运行命令的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
试图实现你自己的做法有潜在的安全隐患。 我强烈警告说要这样做。