Введите пароль только один раз для скрипта оболочки

Введите пароль только один раз для скрипта оболочки

Я сделал скрипт оболочки для обновления и модернизации моих существующих пакетов за один раз. Скрипт такой:

#!/bin/bash
sudo apt-get update;
sleep 10;
sudo apt-get upgrade;
sleep 10;
sudo youtube-dl -U;
sleep 10;
sudo shutdown -h now;
exit 0

Проблема, с которой я сталкиваюсь, заключается в том, что поскольку мое интернет-соединение не очень быстрое, к тому времени, как оно достигает третьей команды, сеанс пароля истекает, и мне приходится вводить пароль заново. И для этого мне приходится все время находиться перед своим ПК, что фактически сводит на нет цель скрипта.

Итак, мой вопрос::

Есть ли способ сохранить пароль в переменной и каждый раз sudoвводить пароль из переменной, чтобы мне не приходилось все время находиться рядом с компьютером? (или что-то подобное, что делало бы то, что мне нужно)

Что-то вроде этого:

#!/bin/bash
printf "Please enter your password: ";
read -s password
sudo apt-get update;
$password
sleep 10;
sudo apt-get upgrade;
$password
sleep 10;
sudo youtube-dl -U;
$password
sleep 10;
sudo shutdown -h now;
$password
exit 0

решение1

Удалите sudo из команд в скрипте и запустите сам скрипт от имени пользователя root, например:

#!/bin/bash
apt-get update;
sleep 10;
apt-get upgrade;
sleep 10;
youtube-dl -U;
sleep 10;
shutdown -h now;
exit 0

И запустите его с помощьюsudo ./my-script.sh

решение2

Это позволит вам ввести пароль один раз. Для apt-getкоманд ниже установлен флаг -y"Автоматический ответ "да" на запросы" для всего, кроме dist-upgrade.

sudo bash -c "apt-get -y update && apt-get dist-upgrade && youtube-dl -U && apt-get -y autoremove && apt-get -y autoclean && shutdown -h now"

Связанный контент