我怎样告诉 shell 脚本我的密码?

我怎样告诉 shell 脚本我的密码?

我一直在尝试创建一个在我登录时运行的脚本。它是这样的sudo apt-get updatesudo apt-get autoremove

#!/bin/bash
(sudo apt-get update)
(sudo apt-get autoremove)

但每当我运行脚本时,我的电脑就会冻结。我猜是因为它正在等待脚本提供密码。如果我PASSWD:mypassword在命令后添加如下命令,会不会有效:

#!/bin/bash
(sudo apt-get update)PASSWD:mypassword
(sudo apt-get autoremove)PASSWD:mypassword

或者我还需要做点别的吗?有办法吗?如果有的话请告诉我!

答案1

实际上,您不必在脚本中包含密码(就我所见,通常不建议在脚本中包含密码)。相反,您可以编辑 sudoer 文件,这样您就可以在不需要密码的情况下运行 apt-get 命令。

更多信息请访问本网站

打开终端(ctrl++ altT

输入命令

sudo visudo

在 sudoers 文件类型末尾

username ALL=(ALL) NOPASSWD: /usr/bin/apt-get

其中 username 是你的用户名(显然)

编辑此文件将允许您运行任何 apt-get 命令而无需输入密码。这意味着您也可以在不输入密码的情况下安装或升级软件包。

您还可以通过在逗号后输入命令路径来将其他命令添加到此列表中。在终端中输入以下命令即可找到命令的路径。

which command

其中 command 是命令的名称(例如 reboot)。

答案2

启动 bash 脚本的命令:

/bin/bash #!/bin/bash

询问用户 root 密码的命令:

[ “$UID” -eq 0 ] || exec sudo bash “$0” “$@”

接下来可以执行的命令示例:

apt-get 更新

apt-get 升级 --yes

关机-r现在

祝你的剧本好运

答案3

尝试这个脚本:

#!/bin/bash
echo "yourpassword" | sudo -S apt-get update
echo "yourpassword" | sudo -S apt-get autoremove

在这里,您可以回显您的密码并使用读取密码-S选项(sudo 的 stdin 选项)。

相关内容