Исправен синтаксис:
удалены иконки INFO и REBOOT Добавлены остановки для предотвращения автоматического закрытия терминала при вызове через другой скрипт modified: admin_helper.txt modified: custom_update_lsp.sh deleted: custom_update_lsp.txt modified: custom_update_sns.sh deleted: puppet_connect.bin
This commit is contained in:
+49
-44
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# ==============================================
|
||||
# Скрипт поэтапного обновления Astra Linux
|
||||
# 🔄 Скрипт поэтапного обновления Astra Linux
|
||||
# ==============================================
|
||||
# Цвета
|
||||
RED='\033[0;31m'
|
||||
@@ -31,7 +31,7 @@ init_marker() {
|
||||
# Если файла нет - создаем со статусом 5
|
||||
if [[ ! -f "$MARKER_FILE" ]]; then
|
||||
echo "5" > "$MARKER_FILE"
|
||||
echo -e "${BLUE} Создан маркер-файл: ${MARKER_FILE}${RESET}"
|
||||
echo -e "${BLUE} Создан маркер-файл: ${MARKER_FILE}${RESET}"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -45,11 +45,12 @@ get_status() {
|
||||
|
||||
set_status() {
|
||||
echo "$1" > "$MARKER_FILE"
|
||||
echo -e "${BLUE} Статус обновления: ${BOLD}$1${RESET}"
|
||||
echo -e "${BLUE} Статус обновления: ${BOLD}$1${RESET}"
|
||||
}
|
||||
|
||||
show_status_info() {
|
||||
local status=$(get_status)
|
||||
local
|
||||
status=$(get_status)
|
||||
echo -e "\n${BOLD}${CYAN}━━━ Статус обновления ━━━${RESET}"
|
||||
case $status in
|
||||
1072)
|
||||
@@ -86,8 +87,8 @@ check_root() {
|
||||
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
echo -e "${RED}${ERROR} Ошибка: нужны права root!${RESET}"
|
||||
echo -e "${YELLOW}Используйте: sudo $0${RESET}\n"
|
||||
read -p "Нажмите Enter для завершения..."
|
||||
echo -e "${YELLOW} Используйте: sudo $0${RESET}\n"
|
||||
read -r -p "Нажмите Enter для завершения"
|
||||
exit 1
|
||||
else
|
||||
echo -e "${GREEN}${CHECK} Права root: OK${RESET}"
|
||||
@@ -105,7 +106,7 @@ get_current_version() {
|
||||
else
|
||||
echo -e "${RED}${ERROR} Файл версии не найден: $VERSION_FILE${RESET}"
|
||||
CURRENT_VERSION="unknown"
|
||||
read -p "Нажмите Enter для завершения..."
|
||||
read -r -p "Нажмите Enter для завершения"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
@@ -115,7 +116,8 @@ get_current_version() {
|
||||
# ==============================================
|
||||
|
||||
check_status_and_version() {
|
||||
local status=$(get_status)
|
||||
local status
|
||||
status=$(get_status)
|
||||
|
||||
echo ""
|
||||
|
||||
@@ -126,7 +128,7 @@ check_status_and_version() {
|
||||
# Если статус 0 - всё хорошо, выходим
|
||||
if [[ "$status" == "1072" ]]; then
|
||||
echo -e "${GREEN}${CHECK} Все этапы завершены${RESET}\n"
|
||||
read -p "Нажмите Enter для завершения..."
|
||||
read -r -p "Нажмите Enter для завершения"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
@@ -194,6 +196,7 @@ ask_update() {
|
||||
esac
|
||||
|
||||
echo ""
|
||||
# shellcheck disable=SC2086
|
||||
read -p "$(echo -e ${YELLOW}${message} [y/N]: ${RESET})" -n 1 -r
|
||||
echo ""
|
||||
|
||||
@@ -202,7 +205,7 @@ ask_update() {
|
||||
return 0
|
||||
else
|
||||
echo -e "\n${YELLOW}${WARN} Обновление отменено пользователем${RESET}\n"
|
||||
read -p "Нажмите Enter для завершения..."
|
||||
read -r -p "Нажмите Enter для завершения"
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
@@ -216,18 +219,18 @@ stage1_update_system() {
|
||||
|
||||
mgmt_server=$(awk -F' *= *' '/^ *server *=/{print $2}' /etc/puppetlabs/puppet/puppet.conf)
|
||||
if [[ -z "$mgmt_server" ]]; then
|
||||
echo -e "${RED}${ERROR} Не удалось получить адрес сервера управления из $puppet_conf${RESET}"
|
||||
read -p "Нажмите Enter для завершения..."
|
||||
echo -e "${RED}${ERROR} Не удалось получить адрес сервера управления из puppet_conf ${RESET}"
|
||||
read -r -p "Нажмите Enter для завершения"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}${CHECK} Сервер управления: ${BOLD}${CYAN}$mgmt_server${RESET}"
|
||||
|
||||
echo -e "\n${BLUE Остановка и отключение службы Puppet...${RESET}"
|
||||
echo -e "\n${BLUE} Остановка и отключение службы Puppet...${RESET}"
|
||||
systemctl stop puppet.service 2>/dev/null
|
||||
systemctl disable puppet.service 2>/dev/null
|
||||
sleep 5
|
||||
|
||||
echo -e "\n${BLUE} Настройка репозиториев Astra...${RESET}"
|
||||
echo -e "\n${BLUE} Настройка репозиториев Astra...${RESET}"
|
||||
repo_file="/etc/apt/sources.list"
|
||||
cat > "$repo_file" << EOF
|
||||
# Astra Linux 1.7.10 репозитории
|
||||
@@ -240,19 +243,20 @@ deb http://${mgmt_server}/astra/1.7.10/repository-extended/ 1.7_x86-64 contrib m
|
||||
deb [trusted=yes] http://${mgmt_server}/astra/1.7/custom/ 1.7_x86-64 contrib main non-free
|
||||
EOF
|
||||
|
||||
# shellcheck disable=SC2181
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo -e "${GREEN}${CHECK} Репозитории настроены: $repo_file${RESET}"
|
||||
else
|
||||
echo -e "${RED}${ERROR} Ошибка настройки репозиториев${RESET}"
|
||||
read -p "Нажмите Enter для завершения..."
|
||||
read -r -p "Нажмите Enter для завершения"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "\n${BLUE} Очистка старых репозиториев...${RESET}"
|
||||
echo -e "\n${BLUE} Очистка старых репозиториев...${RESET}"
|
||||
|
||||
if ls /etc/apt/sources.list.d/*.list 2>/dev/null 1>/dev/null; then
|
||||
echo -e "${YELLOW}${WARN} Найдены файлы в /etc/apt/sources.list.d/${RESET}"
|
||||
echo -e "${BLUE} Файлы для удаления:${RESET}"
|
||||
echo -e "${BLUE} Файлы для удаления:${RESET}"
|
||||
ls -la /etc/apt/sources.list.d/*.list 2>/dev/null || echo " (нет .list файлов)"
|
||||
rm -f /etc/apt/sources.list.d/*.list 2>/dev/null
|
||||
echo -e "${GREEN}${CHECK} Все .list файлы удалены${RESET}"
|
||||
@@ -260,24 +264,24 @@ EOF
|
||||
echo -e "${GREEN}${CHECK} Папка /etc/apt/sources.list.d/ пуста${RESET}"
|
||||
fi
|
||||
|
||||
echo -e "\n${BLUE} Обновление списка пакетов...${RESET}"
|
||||
echo -e "\n${BLUE} Обновление списка пакетов...${RESET}"
|
||||
apt update
|
||||
sleep 3
|
||||
|
||||
echo -e "\n${BLUE} Загрузка пакетов...${RESET}"
|
||||
echo -e "\n${BLUE} Загрузка пакетов...${RESET}"
|
||||
apt dist-upgrade --download-only -y
|
||||
|
||||
echo -e "\n${BLUE} Подготовка системы к обновлению...${RESET}"
|
||||
echo -e "\n${BLUE} Подготовка системы к обновлению...${RESET}"
|
||||
dpkg -s gk-kvm >/dev/null 2>&1 && { apt update && apt install --only-upgrade gk-kvm; } || true
|
||||
dpkg -s secretnet >/dev/null 2>&1 && { sudo dpkg -P secretnet; } || true
|
||||
dpkg -s sns >/dev/null 2>&1 && { sudo dpkg -P sns; } || true
|
||||
dpkg -s gk-kvm >/dev/null 2>&1 && { tarm_unlock; } || true
|
||||
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
|
||||
|
||||
echo -e "${BLUE} Выполняется обновление...${RESET}"
|
||||
echo -e "${BLUE} Выполняется обновление...${RESET}"
|
||||
/usr/sbin/astra-update -A -r -T -K || {
|
||||
echo -e "${RED}${ERROR} Ошибка обновления пакетов${RESET}"
|
||||
read -p "Нажмите Enter для завершения..."
|
||||
read -r -p "Нажмите Enter для завершения"
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -292,7 +296,7 @@ EOF
|
||||
else
|
||||
echo -e "${RED}${ERROR} Версия системы: $NEW_VERSION (ожидалось $TARGET_VERSION)${RESET}"
|
||||
echo -e "${RED}${ERROR} Обновление прошло с ошибкой!${RESET}"
|
||||
read -p "Нажмите Enter для завершения..."
|
||||
read -r -p "Нажмите Enter для завершения"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
@@ -301,8 +305,8 @@ EOF
|
||||
set_status 1
|
||||
|
||||
echo -e "\n${GREEN}${CHECK} ${BOLD}1 этап завершен! Система обновлена до $TARGET_VERSION${RESET}"
|
||||
echo -e "${YELLOW} Требуется перезагрузка для продолжения${RESET}"
|
||||
echo -e "${YELLOW} После перезагрузки запустите скрипт снова ${RESET}\n"
|
||||
echo -e "${YELLOW} Требуется перезагрузка для продолжения${RESET}"
|
||||
echo -e "${YELLOW} После перезагрузки запустите скрипт снова ${RESET}\n"
|
||||
ask_reboot
|
||||
}
|
||||
|
||||
@@ -313,8 +317,8 @@ EOF
|
||||
stage2_install_security() {
|
||||
mgmt_server=$(awk -F' *= *' '/^ *server *=/{print $2}' /etc/puppetlabs/puppet/puppet.conf)
|
||||
if [[ -z "$mgmt_server" ]]; then
|
||||
echo -e "${RED}${ERROR} Не удалось получить адрес сервера управления из $puppet_conf${RESET}"
|
||||
read -p "Нажмите Enter для завершения..."
|
||||
echo -e "${RED}${ERROR} Не удалось получить адрес сервера управления из puppet_conf ${RESET}"
|
||||
read -r -p "Нажмите Enter для завершения"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${BOLD}${BLUE}━━━ ЭТАП 2: Установка Secret Net ━━━${RESET}\n"
|
||||
@@ -324,23 +328,23 @@ stage2_install_security() {
|
||||
if [[ "$CURRENT_VER" != "$TARGET_VERSION" ]]; then
|
||||
echo -e "${RED}${ERROR} Система не обновлена до $TARGET_VERSION (текущая: $CURRENT_VER)${RESET}"
|
||||
echo -e "${RED}${ERROR} Сначала выполните 1 этап обновления${RESET}"
|
||||
read -p "Нажмите Enter для завершения..."
|
||||
read -r -p "Нажмите Enter для завершения"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -e "${BLUE} Установка SecretNet...${RESET}"
|
||||
cd /tmp/
|
||||
wget http://$mgmt_server/SN/sns_8.2-2426.astra1.7_amd64.deb
|
||||
echo -e "${BLUE} Установка SecretNet...${RESET}"
|
||||
# shellcheck disable=SC2086
|
||||
wget --output-file=/tmp/sns_8.2-2426.astra1.7_amd64.deb http://$mgmt_server/SN/sns_8.2-2426.astra1.7_amd64.deb
|
||||
apt install -y /tmp/sns_8.2-2426.astra1.7_amd64.deb
|
||||
echo -e "${BLUE} Установка SecretNet выполнена${RESET}"
|
||||
echo -e "${BLUE} Установка SecretNet выполнена${RESET}"
|
||||
|
||||
# Устанавливаем статус 2
|
||||
set_status 2
|
||||
|
||||
echo -e "\n${GREEN}${CHECK} ${BOLD}2 этап завершен! Secretnet установлен${RESET}"
|
||||
echo -e "${YELLOW} Требуется перезагрузка для продолжения${RESET}"
|
||||
echo -e "${YELLOW} После перезагрузки запустите скрипт снова ${RESET}\n"
|
||||
echo -e "${YELLOW} Требуется перезагрузка для продолжения${RESET}"
|
||||
echo -e "${YELLOW} После перезагрузки запустите скрипт снова ${RESET}\n"
|
||||
ask_reboot
|
||||
}
|
||||
|
||||
@@ -351,19 +355,19 @@ stage2_install_security() {
|
||||
stage3_clean_and_fix() {
|
||||
echo -e "${BOLD}${BLUE}━━━ ЭТАП 3: Чистка системы и исправление багов ━━━${RESET}\n"
|
||||
|
||||
echo -e "${BLUE} Запуск puppet...${RESET}"
|
||||
echo -e "${BLUE} Запуск puppet...${RESET}"
|
||||
/opt/puppetlabs/bin/puppet agent -t;
|
||||
/opt/puppetlabs/bin/puppet agent -t;
|
||||
|
||||
echo -e "${BLUE} Финальное обновление пакетов...${RESET}"
|
||||
echo -e "${BLUE} Финальное обновление пакетов...${RESET}"
|
||||
/usr/sbin/astra-update -A -r -T
|
||||
|
||||
echo -e "${BLUE} Исправление печати kerberos...${RESET}"
|
||||
echo -e "${BLUE} Исправление печати kerberos...${RESET}"
|
||||
rm /usr/lib/cups/backend/smb
|
||||
ln -s /usr/libexec/samba/smbspool_krb5_wrapper /usr/lib/cups/backend/smb
|
||||
chmod 700 /usr/lib/cups/backend/smb
|
||||
|
||||
echo -e "${BLUE} Очистка старых ядер...${RESET}"
|
||||
echo -e "${BLUE} Очистка старых ядер...${RESET}"
|
||||
base_kernel=$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")
|
||||
|
||||
kernels_to_remove=$(dpkg -l 'linux-*' | sed -n '/^ii/p' | \
|
||||
@@ -373,16 +377,16 @@ stage3_clean_and_fix() {
|
||||
head -n -1)
|
||||
|
||||
if [ -n "$kernels_to_remove" ]; then
|
||||
apt purge -y $kernels_to_remove
|
||||
apt purge -y "$kernels_to_remove"
|
||||
fi
|
||||
|
||||
echo -e "${BLUE} Очистка пакетов...${RESET}"
|
||||
echo -e "${BLUE} Очистка пакетов...${RESET}"
|
||||
apt clean
|
||||
apt autoclean
|
||||
apt autopurge -y
|
||||
aptitude purge ~c -y
|
||||
|
||||
echo -e "${BLUE} Запуск puppet и возвращение в автозапуск...${RESET}"
|
||||
echo -e "${BLUE} Запуск puppet и возвращение в автозапуск...${RESET}"
|
||||
systemctl enable puppet --now
|
||||
|
||||
echo -e "${GREEN}${CHECK} Чистка и исправление завершены${RESET}\n"
|
||||
@@ -408,15 +412,16 @@ stage3_clean_and_fix() {
|
||||
# ==============================================
|
||||
|
||||
ask_reboot() {
|
||||
# shellcheck disable=SC2086
|
||||
read -p "$(echo -e ${YELLOW}Перезагрузить сейчас? [y/N]: ${RESET})" -n 1 -r
|
||||
echo ""
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo -e "${BLUE} Перезагрузка...${RESET}"
|
||||
echo -e "${BLUE} Перезагрузка...${RESET}"
|
||||
reboot
|
||||
else
|
||||
echo -e "${YELLOW}${WARN} Перезагрузка отложена${RESET}"
|
||||
echo -e "${YELLOW}${WARN} Не забудьте перезагрузить систему вручную!${RESET}"
|
||||
echo -e "${YELLOW} Для продолжения обновления запустите: sudo $0${RESET}"
|
||||
echo -e "${YELLOW} Для продолжения обновления запустите: sudo $0${RESET}"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -437,7 +442,7 @@ main() {
|
||||
3) stage3_clean_and_fix ;;
|
||||
*)
|
||||
echo -e "${RED}${ERROR} Неизвестный этап: $STAGE${RESET}"
|
||||
read -p "Нажмите Enter для завершения..."
|
||||
read -r -p "Нажмите Enter для завершения"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user