我有以下 bash
脚本来重新启动 Debian 中的网络管理器。该脚本按应有的方式工作,但并不像我希望的那样。当脚本要求输入 sudo
密码时,我可以使用 echo
传递它,但它会在脚本执行时在终端中显示密码,这使得它在美学上不如我想。无论如何让脚本输入密码,但在脚本调用 sudo
密码时不显示密码文本?
在提交此问题之前,我尝试了尽可能多的关于 Stack Overflow 的建议,以及 Stack Exchange。
脚本如下:
#!/bin/bash
clear
echo "Restarting service Network Manager"
echo""
sleep 1
echo -e "\033[0;31m......................................\033[0m"
echo -e "\033[0;31m......................................\033[0m"
sleep 1
echo""
sudo service network-manager restart
sleep 2
echo <Password>
sleep 2
echo "Service Network Manager Restarted"
sleep 1
echo ""
echo "Relinquishing control of terminal to user..."
sleep 7
clear
最佳答案
删除 echo <Password>
线?我很确定它除了显示密码外什么都不做,如 sudo
显然(通过 /etc/sudoers
中的适当条目)无需您提供密码即可工作。 (您使用 echo
写入终端的内容不会传递给任何其他进程。)
一般来说,可以使用sudo -S
制作sudo
期待 stdin 上的密码。但一般来说,如果您必须在脚本中硬编码密码,那么您在某些方面就做错了。
关于linux - 隐藏明文密码不显示在 bash 脚本中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45071805/