如何在 Shell 脚本中执行 sudo 命令?

How Do I Execute a sudo command in a Shell Script?

我正在使用 LaunchD Task Scheduler 应用程序在我的 Mac Mini 上安排作业。我想每两个小时执行一次清除命令,这样我就不必记得在终端中执行此操作。我必须使用 sudo 命令 运行 这个。我想以保护我的密码的方式执行此操作。

我发现了很多不同的方法来实现这一点,并且对解决方案进行了很多辩论。我现在决定 运行 以下脚本。据我了解,这应该可以防止命令被写入 .bash_history 和缓存文件中。现在,我拥有我的脚本(和每个脚本)的文件夹的权限设置为管理员和具有访问权限的当前用户。

#!/bin/sh
export HISTIGNORE='*sudo -S*'
echo "mypassword" | sudo -S -k purge

我读到过一个可以将密码放入安全文件的过程,我想可以从该文件访问密码。我想尝试这个过程,但我找不到如何执行此操作的示例。我认为用密码引用一个安全文件可能比将密码放在每个 shell 脚本中更好。我还想在 .bash_history.

中查看命令

执行此操作的安全方法是允许用户 运行 无需密码即可执行特定命令。

从 Whosebug 的姊妹站点之一查看 this question

您想要一个脚本 运行,作为 root,每 2 小时一次,所以您不需要记住?

sudo crontab -e

0 0,2,4,6,8,10,12,14,16,18,20,22 * * * /home/lightbe/swanky_script.sh

...然后您的密码将受到保护。