фича: добавлен пункт 'Проверка VPS' (Health Check) для мониторинга SSL и Nginx

This commit is contained in:
Petro1990 2026-03-13 15:43:33 +03:00
parent 3770143aee
commit e21d37a3e7
1 changed files with 65 additions and 20 deletions

49
rproxy
View File

@ -3,7 +3,7 @@
# Публикация локальных сервисов через SSH-туннели + nginx на VPS # Публикация локальных сервисов через SSH-туннели + nginx на VPS
# http://5.104.75.50:3000/Petro1990/rProxy # http://5.104.75.50:3000/Petro1990/rProxy
VERSION="1.0.3" VERSION="1.0.4"
CONF_DIR="/opt/etc/rproxy" CONF_DIR="/opt/etc/rproxy"
CONF_FILE="$CONF_DIR/rproxy.conf" CONF_FILE="$CONF_DIR/rproxy.conf"
SERVICES_DIR="$CONF_DIR/services" SERVICES_DIR="$CONF_DIR/services"
@ -171,11 +171,12 @@ main_menu() {
draw_separator draw_separator
printf " ${BOLD}4)${NC} ▶️ Запустить туннель\n" printf " ${BOLD}4)${NC} ▶️ Запустить туннель\n"
printf " ${BOLD}5)${NC} ⏹️ Остановить туннель\n" printf " ${BOLD}5)${NC} ⏹️ Остановить туннель\n"
printf " ${CYAN}${BOLD}6)${NC} 🔄 Перезапустить туннель\n" printf " ${BOLD}6)${NC} 🔄 Перезапустить туннель\n"
draw_separator draw_separator
printf " ${BOLD}7)${NC} 🔒 Получить/Обновить SSL (Certbot)\n" printf " ${BOLD}7)${NC} 🔒 Получить/Обновить SSL (Certbot)\n"
printf " ${BOLD}8)${NC} ⚙️ Настройки VPS\n" printf " ${BOLD}8)${NC} ⚙️ Настройки VPS\n"
printf " ${BOLD}9)${NC} 🚀 Обновить rProxy\n" printf " ${BOLD}9)${NC} 🚀 Обновить rProxy\n"
printf " ${BOLD}10)${NC} 🏥 Проверка VPS (Health)\n"
printf " ${BOLD}0)${NC} 🚪 Выход\n" printf " ${BOLD}0)${NC} 🚪 Выход\n"
prompt "Выберите действие: " prompt "Выберите действие: "
@ -190,6 +191,7 @@ main_menu() {
7) do_ssl_interactive ;; 7) do_ssl_interactive ;;
8) do_setup ;; 8) do_setup ;;
9) do_self_update ;; 9) do_self_update ;;
10) do_health_check ;;
0|q) clear_screen; exit 0 ;; 0|q) clear_screen; exit 0 ;;
*) ;; *) ;;
esac esac
@ -505,6 +507,49 @@ do_self_update() {
pause pause
} }
# ══════════════════════════════════════════════════════════════════════
# ПРОВЕРКА СОСТОЯНИЯ VPS
# ══════════════════════════════════════════════════════════════════════
do_health_check() {
clear_screen
draw_box "Состояние VPS и SSL"
printf "\n"
msg "Проверяю Nginx..."
if ssh_cmd "systemctl is-active nginx >/dev/null 2>&1"; then
printf " Nginx: ${GREEN}${BOLD}Запущен${NC}\n"
else
printf " Nginx: ${RED}${BOLD}Остановлен${NC}\n"
fi
msg "Проверяю автопродление SSL (Certbot)..."
local timer=$(ssh_cmd "systemctl is-active certbot.timer 2>/dev/null | tr -d '\r'")
if [ "$timer" = "active" ]; then
printf " SSL Timer: ${GREEN}${BOLD}Активен (Systemd)${NC}\n"
local next_run=$(ssh_cmd "systemctl list-timers certbot.timer --no-legend 2>/dev/null | awk '{print \$1, \$2}'" | head -n 1)
[ -n "$next_run" ] && printf " Следующее: $next_run\n"
else
# Проверка cron
if ssh_cmd "crontab -l 2>/dev/null | grep -q certbot"; then
printf " SSL Renewal: ${GREEN}${BOLD}Настроено (Cron)${NC}\n"
else
printf " SSL Renewal: ${RED}${BOLD}Не обнаружено${NC}\n"
fi
fi
msg "Действующие сертификаты:"
ssh_cmd "certbot certificates 2>/dev/null | grep -E 'Expiry Date:|Domains:'" | while read -r line; do
printf " %s\n" "$line"
done
printf "\n"
msg "Утилиты на роутере:"
[ -x "/opt/bin/ssh" ] && printf " SSH: ${GREEN}Entware OK${NC}\n" || printf " SSH: ${RED}Missing${NC}\n"
[ -x "/opt/bin/autossh" ] && printf " AutoSSH: ${GREEN}OK${NC}\n" || printf " AutoSSH: ${RED}Missing${NC}\n"
pause
}
# ══════════════════════════════════════════════════════════════════════ # ══════════════════════════════════════════════════════════════════════
# УДАЛИТЬ СЕРВИС (интерактивно) # УДАЛИТЬ СЕРВИС (интерактивно)
# ══════════════════════════════════════════════════════════════════════ # ══════════════════════════════════════════════════════════════════════