====== Касса самообслуживания ====== Self-Service Ticket Office Тестирование железа с записью лога оперативная память/диски/нагрузка {{ :support:terminals:kso_autotest.zip |}} {{:support:terminals:windowsterminal_61ieccfkip.png?400|}} curl -O https://as-wiki.ru/_media/support/terminals/kso_autotest.zip && unzip -o kso_autotest.zip && chmod +x kso_autotest.sh && ./kso_autotest.sh ++++kso_autotest.sh| #!/bin/bash # == KSO Auto Test Script с Меню == # Автор: takraztak | Дата: 2025-07-18 LOG_DIR="/var/log" LAST_LOG="" LAST_ERR="" find_last_logs() { LAST_LOG=$(ls -t "$LOG_DIR"/kso_test_*.log 2>/dev/null | head -n1) LAST_ERR=$(ls -t "$LOG_DIR"/kso_test_*.err.log 2>/dev/null | head -n1) } run_tests() { TIMESTAMP=$(date '+%Y-%m-%d_%H-%M-%S') LOGFILE="$LOG_DIR/kso_test_$TIMESTAMP.log" ERRFILE="$LOG_DIR/kso_test_$TIMESTAMP.err.log" log() { echo -e "$1" | tee -a "$LOGFILE" } log "=== ТЕСТ СИСТЕМЫ КСО ===" log "⏱ Время запуска: $(date)" log "\n[1] Включение стандартных репозиториев..." RETRIES=5 while [ ! -f /etc/apt/sources.list-back ] && [ $RETRIES -gt 0 ]; do log " ⏳ Ожидание файла /etc/apt/sources.list-back... (осталось попыток: $RETRIES)" sleep 1 RETRIES=$((RETRIES - 1)) done if [ -f /etc/apt/sources.list-back ]; then cp /etc/apt/sources.list-back /etc/apt/sources.list 2>>"$ERRFILE" log " → Репозитории восстановлены." else log " ! Файл /etc/apt/sources.list-back не найден. Прерывание." echo "Отсутствует sources.list-back" >> "$ERRFILE" return 1 fi log "\n[2] Обновление списка пакетов..." apt update >> "$LOGFILE" 2>>"$ERRFILE" || return 1 log "\n[3] Установка необходимых пакетов..." apt install -y stress memtester mc wget tar >> "$LOGFILE" 2>>"$ERRFILE" || return 1 log "\n[4] Загрузка и установка HDSentinel..." cd /tmp || return 1 wget -q https://www.hdsentinel.com/hdslin/hdsentinel_gui64bit.tar.xz if [ -f hdsentinel_gui64bit.tar.xz ]; then tar -xf hdsentinel_gui64bit.tar.xz cd HDSentinel_GUI || return 1 ./install.sh >> "$LOGFILE" 2>>"$ERRFILE" log " → HDSentinel установлен." else log " ! Не удалось загрузить HDSentinel." echo "Ошибка: HDSentinel не загружен" >> "$ERRFILE" return 1 fi log "\n[5] Отключение репозиториев..." rm -f /etc/apt/sources.list 2>>"$ERRFILE" log " → sources.list удалён." log "\n=== ЗАПУСК ТЕСТОВ ===" log "\n[✓] Проверка SSD через HDSentinel:" /usr/share/bin/HDSentinel | tee -a "$LOGFILE" || echo "Ошибка запуска HDSentinel" >> "$ERRFILE" MEM_TOTAL_KB=$(grep MemTotal /proc/meminfo | awk '{print $2}') MEM_FREE_KB=$(grep MemAvailable /proc/meminfo | awk '{print $2}') MEM_TEST_MB=$((MEM_FREE_KB / 1024 - 200)) if (( MEM_TEST_MB < 512 )); then log "\n[✗] Недостаточно памяти для memtester: всего ${MEM_TEST_MB} MB" else log "\n[✓] Тест памяти через memtester (~${MEM_TEST_MB} MB):" memtester "${MEM_TEST_MB}M" 1 | tee -a "$LOGFILE" 2>>"$ERRFILE" fi log "\n[✓] Тест стабильности под нагрузкой (stress 10 минут)..." stress -c 4 -m 5 -i 10 -t 600 >> "$LOGFILE" 2>>"$ERRFILE" log " → stress завершён." log "\n=== ТЕСТ ЗАВЕРШЁН ===" log "📁 Лог: $LOGFILE" log "⚠️ Ошибки (если были): $ERRFILE" log "⏱ Завершено: $(date)" } menu() { while true; do find_last_logs echo -e "\n╔══════════════════════════════════════════════╗" echo "║ KSO АВТОТЕСТ: МЕНЮ ДЕЙСТВИЙ ║" echo "╠══════════════════════════════════════════════╣" echo "║ 1 - Запустить полный тест ║" echo "║ 2 - Показать последний лог ║" echo "║ 3 - Показать ошибки из последнего лога ║" echo "║ 0 - Выход ║" echo "╠══════════════════════════════════════════════╣" echo "║ 🔍 Навигация по логам (less): ║" echo "║ q - выйти / - поиск n - далее ║" echo "║ G - конец g - начало ↑/↓ - прокрутка ║" echo "╚══════════════════════════════════════════════╝" read -rp "Выбор: " choice case "$choice" in 1) run_tests ;; 2) if [ -n "$LAST_LOG" ]; then less "$LAST_LOG" else echo "❌ Лог не найден" fi ;; 3) if [ -n "$LAST_ERR" ]; then less "$LAST_ERR" else echo "❌ Лог ошибок не найден" fi ;; 0) break ;; *) echo "Неверный выбор." ;; esac done } menu ++++ Сделать исполняемым\\ ''chmod +x kso_autotest.sh''\\ Запустить\\ ''sudo ./kso_autotest.sh''\\