7

我们可以使用 heredocs 使用 sudo 运行多个命令吗?

我在运行多个命令时遇到了一个问题(需要为每个命令传递密码):

echo 'password'| sudo -S ls
echo 'password'| sudo -S cat /var/log/abc.log

谁能帮助我如何在脚本中自动执行此操作?喜欢:

echo 'password' | sudo -S << ENDBLOCK
ls
cat
ENDBLOCK
4

3 回答 3

6

你可以运行sh -c ...,但记得正确引用。

sudo sh -c 'id; echo another command ; id'

sudo必须将此视为sh命令的单个参数。

当然,您可以使用换行符代替分号:

sudo sh -c '
  echo "I am root"
  id
  echo "another command"
  id
'
于 2015-05-20T06:58:32.120 回答
2

一种方法是编写一个脚本,其中包含您需要使用 sudo 执行的所有操作,然后使用 sudo 运行该脚本。

于 2015-05-20T06:45:17.963 回答
1

您可以将所有命令放在脚本中。然后

  • 须藤 ./script.sh
  • 将 script.sh 的权限放入 /etc/sudoers.d;这样您就无需再次输入密码(对于该脚本)
于 2015-05-20T06:54:10.077 回答