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