#!/bin/bash set -e # Остановить выполнение при любой ошибке # --- Проверка прав root --- if [[ $EUID -ne 0 ]]; then echo "Этот скрипт нужно запускать от имени root (sudo ./install_all.sh)." exit 1 fi # --- Определение рабочей директории (папка, где лежит скрипт) --- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" # --- Функция для вывода заголовков --- print_step() { echo "" echo "==================================================" echo "$1" echo "==================================================" } # --- Проверка наличия всех подпапок --- for dir in gia11_po slang_newt cripto_pro biblio_rutocken; do if [ ! -d "$dir" ]; then echo "ОШИБКА: Не найдена папка $dir в $SCRIPT_DIR" exit 1 fi done # ================================================== # ШАГ 1: gia11_po # ================================================== print_step "ШАГ 1: Установка GIA11_PPE" cd "$SCRIPT_DIR/gia11_po" # Установка unzip при необходимости if ! command -v unzip &> /dev/null; then echo "Устанавливаю unzip..." apt-get install -y unzip fi # Распаковка ZIP-архива ZIP_FILE=$(find . -maxdepth 1 -name "*.zip" | head -n 1) if [ -z "$ZIP_FILE" ]; then echo "ОШИБКА: ZIP-архив не найден в gia11_po!" exit 1 fi echo "Распаковываю: $ZIP_FILE" unzip -o "$ZIP_FILE" # Поиск и установка RPM RPM_FILE=$(find . -maxdepth 1 -name "*.rpm" | head -n 1) if [ -n "$RPM_FILE" ]; then echo "Устанавливаю пакет: $RPM_FILE" apt-get install -y "./$RPM_FILE" else echo "ОШИБКА: RPM-файл не найден после распаковки!" exit 1 fi cd "$SCRIPT_DIR" # ================================================== # ШАГ 2: slang_newt # ================================================== print_step "ШАГ 2: Установка slang_newt" cd "$SCRIPT_DIR/slang_newt" if [ -f install_slang_netw.sh ]; then chmod +x install_slang_netw.sh echo "Запускаю install_slang_netw.sh..." ./install_slang_netw.sh else echo "ОШИБКА: install_slang_netw.sh не найден!" exit 1 fi cd "$SCRIPT_DIR" # ================================================== # ШАГ 3: cripto_pro # ================================================== print_step "ШАГ 3: Установка Cripto Pro" cd "$SCRIPT_DIR/cripto_pro" TGZ_FILE=$(find . -maxdepth 1 -name "*.tgz" | head -n 1) if [ -z "$TGZ_FILE" ]; then echo "ОШИБКА: TGZ-архив не найден в cripto_pro!" exit 1 fi echo "Распаковываю: $TGZ_FILE" tar -xzvf "$TGZ_FILE" # Поиск папки с install_gui.sh INSTALL_SH=$(find . -maxdepth 3 -name "install_gui.sh" | head -n 1) if [ -n "$INSTALL_SH" ]; then INSTALL_DIR=$(dirname "$INSTALL_SH") echo "Найден установщик: $INSTALL_SH" cd "$INSTALL_DIR" chmod +x install_gui.sh echo "Запускаю графический установщик..." ./install_gui.sh cd "$SCRIPT_DIR/cripto_pro" else echo "ОШИБКА: install_gui.sh не найден!" exit 1 fi cd "$SCRIPT_DIR" # ================================================== # ШАГ 4: biblio_rutocken # ================================================== print_step "ШАГ 4: Установка librtpkcs11ecp" cd "$SCRIPT_DIR/biblio_rutocken" RPM_RUTOKEN=$(find . -maxdepth 1 -name "*.rpm" | head -n 1) if [ -n "$RPM_RUTOKEN" ]; then echo "Устанавливаю пакет: $RPM_RUTOKEN" apt-get install -y "./$RPM_RUTOKEN" else echo "ОШИБКА: RPM-файл librtpkcs11ecp не найден в biblio_rutocken!" exit 1 fi cd "$SCRIPT_DIR" # ================================================== # Завершение # ================================================== print_step "ВСЕ ШАГИ УСПЕШНО ЗАВЕРШЕНЫ" echo "Установка завершена. Рекомендуется проверить работу вручную:" echo " - pcsc_scan -r (для проверки Рутокен)" echo " - проверить работу GIA11 и КриптоПро"