Инструменты пользователя

Инструменты сайта


projects:linux:manual_backup_scripts:oss_check

OSS Check

Входит в набор rPi Seal

oss_check.sh
#!/bin/bash
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
# ==DIS/AUTOEXEC==
# === OSS Check ===
# 08_oss_check.sh — Проверка целостности системы после восстановления SD
#
 
# Стартовый заголовок проверки
echo "📦 Проверка целостности системы Raspberry Pi"
echo "-------------------------------------------"
 
# Вспомогательные функции для форматированного вывода результатов
ok() { echo "✅ $1"; }
fail() { echo "❌ $1"; }
 
# Корневой раздел — информация о доступном и свободном месте
# Также выводим устройство, на котором смонтирован root (например, /dev/mmcblk0p2 или /dev/nvme0n1p2)
echo -n "🔍 Размер root-раздела: "
df -h / | awk 'NR==2 {print $2 " total, " $4 " free"}'
echo -n "🔍 Root-раздел: "
findmnt -n -o SOURCE /
 
# Проверка наличия критических файлов /boot/config.txt и /etc/fstab
# Эти файлы часто теряются при некорректном восстановлении или сбоев на SD
 
echo -n "🔍 /boot/config.txt: "
[[ -f /boot/config.txt ]] && ok "Найден" || fail "Нет файла"
 
echo -n "🔍 /etc/fstab: "
[[ -f /etc/fstab ]] && ok "Найден" || fail "Нет файла"
 
# Проверка статуса службы SSH (часто требуется для удалённого управления)
echo -n "🔍 Служба SSH: "
if systemctl is-active ssh &>/dev/null; then
  ok "Активна"
else
  fail "Неактивна"
  echo "ℹ️  Подсказка: sudo systemctl enable --now ssh"
fi
 
# Проверка интерфейсов WireGuard
# Проверяется наличие утилиты wg и активные интерфейсы
 
echo -n "🔍 WireGuard-интерфейсы: "
if command -v wg &>/dev/null; then
  ACTIVE_WG=$(wg show interfaces)
  [[ -n "$ACTIVE_WG" ]] && ok "$ACTIVE_WG" || fail "Не запущен ни один интерфейс"
else
  fail "Утилита wg не найдена"
fi
 
# Проверка работы службы Docker
# Важно для работы контейнеров (например, RustDesk)
echo -n "🔍 Служба Docker: "
if systemctl is-active docker &>/dev/null; then
  ok "Активна"
else
  fail "Неактивна"
fi
 
# Проверка наличия и активности контейнера RustDesk
# Используется grep, так как имя контейнера может быть внутри строки docker ps
echo -n "🔍 Контейнер rustdesk-server: "
if command -v docker &>/dev/null; then
  docker ps | grep -q rustdesk && ok "Работает" || fail "Не запущен"
else
  fail "Docker не установлен"
fi
 
# Проверка последних ошибок ядра через dmesg
# Возможны предупреждения, ошибки, повреждения
# Исключаются Bluetooth-сообщения, выводится только 3 последних
 
if dmesg &>/dev/null; then
  echo -n "🔍 Ошибки ядра: "
  DMESG_OUTPUT=$(dmesg | grep -iE 'error|fail|corrupt|warn' | grep -v 'Bluetooth' | tail -n 3)
  if [[ -n "$DMESG_OUTPUT" ]]; then
    echo
    echo "$DMESG_OUTPUT"
  else
    ok "Нет критичных ошибок"
  fi
else
  fail "Нет доступа к dmesg (попробуйте sudo)"
fi
 
# Отображение IP-адресов всех активных сетевых интерфейсов
# Проверяется наличие утилиты ip, так как в некоторых минимальных сборках её нет
 
echo "🔍 IP-адреса:"
if command -v ip &>/dev/null; then
  ip -o -4 addr show | awk '{print "   " $2 ": " $4}'
else
  fail "Утилита ip не найдена"
fi
 
# Проверка подключения к интернету через ping на 1.1.1.1 или 8.8.8.8
# Это может выявить проблемы с маршрутизацией или DNS
 
echo -n "🌐 Подключение к интернету (1.1.1.1): "
if ping -c 1 -W 1 1.1.1.1 &>/dev/null || ping -c 1 -W 1 8.8.8.8 &>/dev/null; then
  ok "Доступно"
else
  fail "Нет ответа"
fi
 
# Завершение проверки
 
echo "-------------------------------------------"
echo "🧪 Проверка завершена"
 
# ВОЗМОЖНО: добавить выход с кодом ошибки в будущем для автоматизации
# Например:
# exit $STATUS

*******

projects/linux/manual_backup_scripts/oss_check.txt · Последнее изменение: 2025/04/11 17:44 —

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution 4.0 International
CC Attribution 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki