93

我想用我的密码作为参数运行 sudo,以便我可以将它用于脚本。我试过了

sudo -S mypassword execute_command

但没有任何成功。有什么建议么?

4

5 回答 5

208

-S 开关使 sudo 从 STDIN 读取密码。这意味着你可以做

echo mypassword | sudo -S command

将密码传递给 sudo

但是,出于安全原因,其他人的建议不涉及将密码作为命令的一部分传递,例如检查用户是否为 root,这可能是更好的主意

于 2012-08-14T15:08:51.353 回答
59

您可以s为您的脚本设置该位,以便它不需要sudo并以 root 身份运行(并且您不需要在脚本中编写您的 root 密码):

sudo chmod +s myscript
于 2012-08-14T15:09:11.137 回答
27
echo -e "YOURPASSWORD\n" | sudo -S yourcommand
于 2012-08-14T15:08:35.747 回答
4

一种选择是对 sudo 使用 -A 标志。这会运行一个程序来询问密码。而不是询问,您可以有一个只吐出密码的脚本,以便程序可以继续。

于 2012-08-14T15:10:37.353 回答
-4
# Make sure only root can run our script
if [ "$(id -u)" != "0" ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi
于 2012-08-14T15:12:37.810 回答