我们可以使用heredocs来运行多个需要sudo权限的命令吗?
当我运行多个命令时,我遇到了一个问题(需要为每个命令输入密码):
echo 'password'| sudo -S ls
echo 'password'| sudo -S cat /var/log/abc.log
有人能帮我如何在脚本中自动化这个过程吗?比如:
echo 'password' | sudo -S << ENDBLOCK
ls
cat
ENDBLOCK
我们可以使用heredocs来运行多个需要sudo权限的命令吗?
当我运行多个命令时,我遇到了一个问题(需要为每个命令输入密码):
echo 'password'| sudo -S ls
echo 'password'| sudo -S cat /var/log/abc.log
echo 'password' | sudo -S << ENDBLOCK
ls
cat
ENDBLOCK
您可以运行sh -c ...
,但请记得正确使用引号。
sudo sh -c 'id; echo another command ; id'
sudo
命令必须将其视为 sh
命令的单个参数。
当然,您也可以使用换行符代替分号:
sudo sh -c '
echo "I am root"
id
echo "another command"
id
'
一种方法是编写一个脚本,在其中列出需要使用sudo执行的所有事项,然后通过sudo运行该脚本。
你可以将所有命令放在一个脚本中,然后
sudo
会在短时间内(默认为5分钟)记住使用的密码,因此如果第一次运行不需要太长时间,第二次调用就无需提供密码。然而,更好的解决方案是配置sudo
允许您的特定命令在不提供密码的情况下运行,这样可以完全避免密码出现在脚本中。 - chepner