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

时间:2015-05-20 06:28:54

标签: linux bash shell ubuntu-12.04 sudoers

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

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

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

任何人都可以帮助我如何在脚本中自动执行此操作吗?喜欢:

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

3 个答案:

答案 0 :(得分:4)

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

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

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

当然你可以使用换行代替分号:

sudo sh -c '
  echo "I am root"
  id
  echo "another command"
  id
'

答案 1 :(得分:2)

一种方法是编写一个脚本,其中包含使用sudo所需的所有内容,然后使用sudo运行脚本。

答案 2 :(得分:1)

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

  • sudo ./script.sh
  • 在/etc/sudoers.d中添加了script.sh的权限;这样你就不需要再次输入密码(对于那个脚本)