04.07.2022

Скрипт для отслеживания обновлений в Debian

Вот уже более чем 3 месяца я являюсь счастливейшим пользователем Debian 11 «Bullseye». Будучи истинным адептом минимализма, мой выбор пал на дистрибутив debian-live-11.1.0-amd64-lxde+nonfree.iso который мной был скачан отсюда https://cdimage.debian.org/images/unofficial/non-free/images-including-firmware/current-live/amd64/iso-hybrid/ c окружением рабочего стола LXDE. Получив идеальнейший баланс в минимализме, функциональности, мощи. Но… по умолчанию в Debian проверка обновлений пакетов предоставлена пользователю, то есть это нужно сделать в ручном режиме. Что мне кажется достаточно разумным. В сети я нашел инструкции как можно устанавливать обновления пакетов в автоматическом режиме, но мне это решение не понравилось, и я написал скрипт, который раз в два дня, в определенное пользователем время открывает терминал и предлагает пользователю ввести пароль для проверки обновлений.

Разбор работы скрипта:

Скрипт находится в каталоге по следующему пути ~/.local/bin/new_updater/ с именем upd_fin.sh. Для его работы достаточно дать ему права на исполнение, и запустить его один раз, далее скрипт будет запускать себя сам.

При автоматической инициализации скрипта которую обеспечивает утилита apt, скрипт запустит окно терминала и предложит ввести пароль sudo для обновления индексов репозиториев. После ввода пароля пользователя, скрипт обновляет индексы репозиториев, и после производит поиск обновлений пакетов. Скрипт выводит список обновляемых пакетов и сохраняет их в файл, и если этот файл не пустой, то есть в нем при проверке скрипт находит строки, скрипт «понимает» что есть обновления, и воспроизводит специальный звуковой сигнал, и выводит в терминал список пакетов для обновления. Так же предлагает произвести эти обновления, или отказаться от них.

После этого скрипт получит команду на запуск самого себя через 2 дня. Если обновлений нет, скрипт воспроизведет звуковой сигнал о том что обновлений нет, а так же напишет в терминале об этом, и через 6 секунд сам закроется.

Привожу код:

#!/bin/bash
cd ~/.local/bin/new_updater/
paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga
echo "ПРОВЕРИМ ОБНОВЛЕНИЯ?"
echo "ВВЕДИТЕ ПАРОЛЬ sudo"
sudo apt update
sudo apt list --upgradable | grep -v Вывод >up_lst.txt
a="$(cat ./up_lst.txt)"
if [ -n "$a" ]
then
paplay /usr/share/sounds/freedesktop/stereo/service-login.oga
Y="y"
#echo " ОБНОВЛЯЮ СПИСОК ПАКЕТОВ ИЗ РЕПЫ"
#sudo apt update
echo "ДЛЯ ОБНОВЛЕНИЯ СЛЕДУЮЩИЕ ПАКЕТЫ"
sudo apt list --upgradable
echo "ХОТИТЕ ОБНОВИТЬ СИСТЕМУ="Y",НЕТ ЛЮБУЮ БУКВУ"
read qu
if [ "$qu" = "$Y" ];then
sudo apt dist-upgrade
sudo apt autoremove
echo " СИСТЕМА ОБНОВЛЕНА"
sleep 6s
echo "export DISPLAY=:0 && xterm -e 'sh /home/user/.local/bin/new_updater/upd_fin.sh'" | at 19:10 + 2 days
else
echo " ВЫ ОТКАЗАЛИСЬ ОТ ОБНОВЛЕНИЯ"
sleep 6
echo "export DISPLAY=:0 && xterm -e 'sh /home/user/.local/bin/new_updater/upd_fin.sh'" | at 19:10 + 2 days
fi
else
paplay /usr/share/sounds/freedesktop/stereo/dialog-error.oga
echo "ОБНОВЛЕНИЙ_НЕТ"
sleep 6
echo "export DISPLAY=:0 && xterm -e 'sh /home/user/.local/bin/new_updater/upd_fin.sh'" | at 19:10 + 2 days
fi
для отслеживания обновлений в Debian 1

P.S Создать данный скрипт можно текстовым редактором Nano.

Хочу заметить скрипт весьма простой, прошу меня строго не судить, но он выполняет свою функцию, а я скромно желаю поделиться таким вот простым решением, может кому сгодится.

upd: вместо user пользователь должен вписать своё имя

Автор статьи Vlad-totiks

А на этом сегодня все, надеюсь, данная статья будет вам полезна.
Если вам нравится данный проект и вы хотите что бы он процветал, то вы можете поддержать журнал “Cyber-X” перейдя в сооветствующий раздел на сайте.
Журнал Cyber-X

Источник.