
Я сделал скрипт оболочки для обновления и модернизации моих существующих пакетов за один раз. Скрипт такой:
#!/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"