如何告诉 shell 脚本我的密码?

It'*_*lem 6 apt sudo scripts

我一直在试图创建一个脚本,运行sudo apt-get updatesudo apt-get autoremove每当我登录它是这样的:

#!/bin/bash
(sudo apt-get update)
(sudo apt-get autoremove)
Run Code Online (Sandbox Code Playgroud)

但是每当我运行脚本时,它都会冻结我的计算机。我假设这是因为它正在等待脚本提供密码。如果我PASSWD:mypassword在这样的命令之后添加它会起作用吗:

#!/bin/bash
(sudo apt-get update)PASSWD:mypassword
(sudo apt-get autoremove)PASSWD:mypassword
Run Code Online (Sandbox Code Playgroud)

或者还有什么我应该做的吗?甚至有办法吗?如果是这样请告诉我!

Rum*_*esh 3

实际上,您不必在脚本中包含密码(据我所知,通常不建议在脚本中包含密码)。相反,您可以编辑 sudoer 文件以允许您无需密码即可运行 apt-get 命令。

欲了解更多信息,请访问此网站

打开终端 ( ctrl++ alt)T

输入命令

sudo visudo
Run Code Online (Sandbox Code Playgroud)

在 sudoers 文件类型的末尾

username ALL=(ALL) NOPASSWD: /usr/bin/apt-get
Run Code Online (Sandbox Code Playgroud)

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

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

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

which command
Run Code Online (Sandbox Code Playgroud)

其中 command 是命令的名称(例如重新启动)。


小智 -1

试试这个脚本:

#!/bin/bash
echo "yourpassword" | sudo -S apt-get update
echo "yourpassword" | sudo -S apt-get autoremove
Run Code Online (Sandbox Code Playgroud)

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

  • 抱歉,这将在“ps”中显示您的密码,以便任何有权访问系统的人都可以找到管理员密码。 (2认同)