No description
- Shell 100%
| adguardvpn-watcher.conf | ||
| adguardvpn-watcher.service | ||
| adguardvpn-watcher.sh | ||
| countries.conf | ||
| install.sh | ||
| README.md | ||
| test.sh | ||
| uninstall.sh | ||
AdGuard VPN Watcher
Скрипт и сервис systemd для мониторинга AdGuard VPN и автоматического переподключения.
Возможности
- Мониторинг статуса: Проверка подключения как системного VPN, так и SOCKS5 прокси
- Проверка трафика: Автоматическая проверка доступности сайтов через curl
- Ротация стран: При проблемах переподключение к другим странам с настраиваемым приоритетом
- Экспоненциальный backoff: Увеличение задержек между попытками переподключения
- Автообновление: При запуске проверяется наличие новой версии и выполняется обновление при необходимости
- Гибкая конфигурация: Все настройки вынесены в отдельный конфиг-файл
- User-режим: Сервис запускается от пользователя (не системный)
Установка (для пользователя)
1. Скопируйте файлы
# Скрипт
cp adguardvpn-watcher.sh ~/.local/bin/
# Конфиг
cp adguardvpn-watcher.conf ~/.config/
# Сервис systemd (user-режим)
cp adguardvpn-watcher.service ~/.config/systemd/user/
2. Настройте конфиг
Отредактируйте ~/.config/adguardvpn-watcher.conf для настройки:
- Приоритетные страны — список стран для переподключения (приоритет по порядку)
- Список локаций — получается автоматически из
adguardvpn-cli list-locations - Порт SOCKS5
- Интервалы проверки
- Таймауты переподключения
3. Включите сервис
systemctl --user daemon-reload
systemctl --user enable --now adguardvpn-watcher.service
4. Просмотр логов
# Журнал systemd (user-режим)
journalctl --user -u adguardvpn-watcher.service -f
# Локальный файл лога
tail -f ~/.cache/adguardvpn-watcher/adguardvpn-watcher.log
Конфигурация
Конфигурационный файл ~/.config/adguardvpn-watcher.conf содержит:
# Режим работы: "vpn", "socks5" или "both"
ADGUARD_MODE=both
# Приоритетные страны (если недоступны, пробуются из списка локаци)
declare -a PRIORITY_COUNTRIES=(
"fi"
"se"
"de"
"nl"
"fr"
"cz"
"bg"
"hu"
)
# Настройки проверки трафика
CHECK_INTERVAL=30
CHECK_TIMEOUT=10
# Порт SOCKS5
SOCKS5_PORT=1080
Режимы работы
VPN Mode (системный VPN)
Проверяет статус подключения через adguardvpn-cli status.
SOCKS5 Mode (прокси)
Запускает SOCKS5 прокси на указанном порту и проверяет его доступность.
Both Mode (оба режима)
Ожидает, что оба режима работают корректно.
Как это работает
- Старт: Запускается
adguardvpn-watcher.sh - Автообновление: Проверяется наличие новой версии и выполняется обновление (если включено
AUTO_UPDATE=true) - Проверка: Каждые 30 секунд проверяются:
- Статус VPN/SOCKS5 (из
adguardvpn-cli status) - Доступность сайтов через curl
- Статус VPN/SOCKS5 (из
- Ротация: Если что-то не так:
- Выбирается случайная страна из списка (приоритетные страны имеют больший шанс)
- Выполняется переподключение
- Если не удалось — ждем и пробуем снова (с экспоненциальной задержкой)
Примеры
Проверка статуса вручную
~/.local/bin/adguardvpn-watcher.sh status
Переподключение вручную
~/.local/bin/adguardvpn-watcher.sh reconnect
Ручной запуск с конкретной страной
ADGUARD_MODE=socks5 \
ADGUARD_CLI=/usr/local/bin/adguardvpn-cli \
~/.local/bin/adguardvpn-watcher.sh
Логирование
Логи сохраняются в ~/.cache/adguardvpn-watcher/adguardvpn-watcher.log с форматом:
[2024-04-07 10:30:15] [INFO] Starting AdGuard VPN Watcher
[2024-04-07 10:30:16] [INFO] CLI version: adguardvpn-cli v1.2.3
[2024-04-07 10:30:17] [INFO] Checking for AdGuard VPN updates...
[2024-04-07 10:30:18] [INFO] New version available: 1.7.12
[2024-04-07 10:30:19] [INFO] Performing auto-update to 1.7.12...
[2024-04-07 10:30:20] [INFO] Checking both modes...
[2024-04-07 10:30:21] [INFO] Traffic check: 4/5 sites reachable (80%)
Зависимости
adguardvpn-cli(должен быть в/usr/local/bin/или настроен в конфиге)curlилиwgetдля проверки трафикаsystemdдля сервиса (user-режим)
Troubleshooting
Сервис не стартует
systemctl --user status adguardvpn-watcher.service
journalctl --user -u adguardvpn-watcher.service -n 50
Проверка CLI
/usr/local/bin/adguardvpn-cli --version
/usr/local/bin/adguardvpn-cli status
/usr/local/bin/adguardvpn-cli list-locations
Ручной тест переподключения
systemctl --user stop adguardvpn-watcher.service
~/.local/bin/adguardvpn-watcher.sh
Лицензия
MIT License