Это скрипт, который я сделал для блокировки и выключения моей системы через 30 минут.
#!/bin/bash
# Read Password
read -s -p "Password: " password
echo
# shutdown and screensaver Command
echo "$password" | sudo -kS shutdown -h +30 &
gnome-screensaver-command -a &
read -p "Press any key to continue... " -n1 -s
Проблема с этим сценарием в том, что иногда он не выключается даже через 30 минут.
Вот почему я добавил команду read
в конце - чтобы отслеживать состояние последовательности выключения, а также окно прогресса. Но этот сценарий показывает только состояние начальной минуты
, например:
Broadcast message from root@eka-PC
(unknown) at 10:31 ...
The system is going down for halt in 30 minutes!
он не показывает ход выключения.
РЕДАКТИРОВАНИЕ:
Я также обнаружил эту ошибку в приведенном выше сценарии. Если введен неправильный пароль, система заблокируется без предупреждения. Можно ли дать условный оператор в команде выключения. Я пробовал это
SHUTDOWN=$(echo "$password" | sudo -kS shutdown -h +30 &);
if [[ $SHUTDOWN -eq 0]]
then
gnome-screensaver-command -a &
read -p "Press any key to continue... " -n1 -s
fi
Он активирует только выключение, но не заставку
Не найдено решение для проверки выключения (echo "$password" | sudo -kS shutdown -h +30 &)
, поэтому я попытался обойти эту проблему, дважды подтвердив пароль. Это рабочий скрипт
#!/bin/bash
red=`tput setaf 1`
green=`tput setaf 2`
reset=`tput sgr0`
echo "Activate screensaver and shutdowns the system in 30 minutes";
# Read Password
shut()
{
read -s -p "Password: " password1
read -s -p "Confirm Password: " password
echo
# Run Command
if [ "$password1" == "$password" ]
then
echo "$password" | sudo -kS shutdown -h +30 &
gnome-screensaver-command -a &
read -p "`echo Добавлен дополнительный код форматирования текста и код отмены завершения работы также в вышеупомянутый скрипт.
Если вы также хотите активировать музыкальный проигрыватель (например, Rhytmbox), то после gnome-screensaver-command -a &
добавьте этот код rhythmbox-client --play &
Любое предложение приветствуется
\n> \n>'` ${green} To cancel shutdown, press C ${reset}`echo Добавлен дополнительный код форматирования текста и код отмены завершения работы также в вышеупомянутый скрипт.
Если вы также хотите активировать музыкальный проигрыватель (например, Rhytmbox), то после gnome-screensaver-command -a &
добавьте этот код rhythmbox-client --play &
Любое предложение приветствуется
\n> \n>'`" prompt
if [[ $prompt =~ [cC](es)* ]]
then
echo "$password" | sudo -kS shutdown -c
read -p "`echo Добавлен дополнительный код форматирования текста и код отмены завершения работы также в вышеупомянутый скрипт.
Если вы также хотите активировать музыкальный проигрыватель (например, Rhytmbox), то после gnome-screensaver-command -a &
добавьте этот код rhythmbox-client --play &
Любое предложение приветствуется
\n> \n>'`${red} Shutdown Cancelled ${reset}" -n1 -s
fi
else
echo -e "\n${red} Wrong Password ${reset}, Re enter the password"
shut
fi
}
shut
Добавлен дополнительный код форматирования текста и код отмены завершения работы также в вышеупомянутый скрипт.
Если вы также хотите активировать музыкальный проигрыватель (например, Rhytmbox), то после gnome-screensaver-command -a &
добавьте этот код rhythmbox-client --play &
Любое предложение приветствуется
Этот сценарий управляет таймером завершения работы с помощью sleep
и цикл.
#!/bin/bash
# Read Password
read -s -p "Password: " password
echo
# Send messages
for i in {0..5}
do
echo "Shutdown in" $((30- i * 5)) "minutes"
sleep 300
done
echo "Shutdown now" | wall
# shutdown and screensaver Command
echo "$password" | sudo -kS shutdown -h +30 &
gnome-screensaver-command -a &
read -p "Press any key to continue... " -n1 -s
Вместо этого Вы могли использовать at
команда. Установите его с
sudo apt-get install at
И работайте
sudo echo "shutdown -h now"|at now + 30 min