Я хотел бы запустить sudo с моим паролем в качестве параметра, чтобы я мог использовать его для script. Я попробовал
sudo -S mypassword execute_command
но без каких-либо успехов. Любые предложения?
Ответ 1
Переключатель -S позволяет sudo считывать пароль из STDIN. Это означает, что вы можете сделать
echo mypassword | sudo -S command
передать пароль sudo
Однако предложения других, которые не связаны с передачей пароля как части команды, такой как проверка, является ли пользователь root, вероятно, намного лучшими идеями по соображениям безопасности.
Ответ 2
Вы можете установить бит s для script, чтобы он не нуждался в sudo и выполнялся как root (и вам не нужно писать свой пароль root в script):
sudo chmod +s myscript
Ответ 3
echo -e "YOURPASSWORD\n" | sudo -S yourcommand
Ответ 4
Один из вариантов - использовать флаг -A для sudo. Это запускает программу для запроса пароля. Вместо того, чтобы спрашивать, у вас может быть script, который просто выплевывает пароль, чтобы программа могла продолжить.
Ответ 5
# 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