如何在脚本中使用sudo执行多个命令

Sas*_*ddi 7 linux bash shell sudoers ubuntu-12.04

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

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

echo 'password'| sudo -S ls
echo 'password'| sudo -S cat /var/log/abc.log
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我如何在脚本中自动化这个?喜欢:

echo 'password' | sudo -S << ENDBLOCK
ls
cat
ENDBLOCK
Run Code Online (Sandbox Code Playgroud)

Mic*_*jer 6

您可以运行sh -c ...,但请记住正确引用。

sudo sh -c 'id; echo another command ; id'
Run Code Online (Sandbox Code Playgroud)

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

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

sudo sh -c '
  echo "I am root"
  id
  echo "another command"
  id
'
Run Code Online (Sandbox Code Playgroud)


小智 2

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