linux - 隐藏明文密码不显示在 bash 脚本中?

标签 linux bash

我有以下 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/

相关文章:

linux - 执行sed命令时出错

bash - 文本文件的特殊行

linux - 在 bash 中读取一行文件

linux - 在 Linux 上将 apache 设置为服务

c++ - 计算内存消耗

python - 杂波不会在断点之外更新屏幕

linux - "find -exec sh -c"内的 grep 变量扩展

linux - 更改 Linux 内核源代码中的版本字符串

bash - 为什么我的 Curl 命令大部分时间都无法下载文件,但有时却可以?

linux - 函数中的命令不能像在终端中手动输入那样工作