Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- # Конфігурація
- IP_TO_PING="172.31.0.1"
- # Додаткові IP для перевірки (розкоментуйте за необхідності)
- # IP_TO_PING_2="192.168.0.2"
- # IP_TO_PING_3="192.168.0.3"
- # IP_TO_PING_4="192.168.0.4"
- BRIDGE="bridge0"
- TAP="tap0"
- OPENVPN_SERVICE="/usr/local/etc/rc.d/openvpn"
- LOG_FILE="/var/log/openvpn_monitor.log"
- # Функція логування з додаванням часу
- log_with_time() {
- echo "$(date '+%Y-%m-%d %H:%M:%S') $1" | tee -a $LOG_FILE
- }
- # Функція відновлення з'єднання
- restore_connection() {
- log_with_time "[INFO] Виконується відновлення..."
- # Видалення інтерфейсу tap0 з bridge0
- log_with_time "[INFO] Видаляємо $TAP з $BRIDGE..."
- if ifconfig $BRIDGE deletem $TAP 2>/dev/null; then
- log_with_time "[INFO] $TAP успішно видалено з $BRIDGE."
- else
- log_with_time "[WARNING] $TAP відсутній у $BRIDGE або вже видалений."
- fi
- # Перезапуск OpenVPN
- log_with_time "[INFO] Перезапуск OpenVPN..."
- $OPENVPN_SERVICE restart
- # Додавання інтерфейсу tap0 назад до bridge0
- log_with_time "[INFO] Додаємо $TAP назад до $BRIDGE..."
- retry=0
- while ! ifconfig $BRIDGE addm $TAP 2>/dev/null; do
- retry=$((retry + 1))
- log_with_time "[ERROR] Не вдалося додати $TAP до $BRIDGE. Спроба $retry..."
- if [ $retry -ge 3 ]; then
- log_with_time "[CRITICAL] Перевищено кількість спроб додавання $TAP до $BRIDGE."
- break
- fi
- sleep 2
- done
- if ifconfig $BRIDGE | grep -q $TAP; then
- log_with_time "[INFO] $TAP успішно доданий до $BRIDGE."
- fi
- }
- # Функція перевірки доступності IP
- check_ping() {
- local ip=$1
- if ! ping -c 1 -t 2 $ip > /dev/null 2>&1; then
- log_with_time "[ERROR] Немає відповіді від $ip."
- restore_connection
- # Повторна перевірка після відновлення
- if ! ping -c 1 -t 2 $ip > /dev/null 2>&1; then
- log_with_time "[ERROR] Після відновлення $ip все ще недоступний. Повторюємо відновлення..."
- restore_connection
- fi
- fi
- }
- # Основна логіка перевірки IP
- check_ping $IP_TO_PING
- # Закоментовані перевірки додаткових IP
- # Розкоментуйте за необхідності для перевірки додаткових IP
- # check_ping $IP_TO_PING_2
- # check_ping $IP_TO_PING_3
- # check_ping $IP_TO_PING_4
- exit 0
Advertisement
Comments
-
- /sbin/ifconfig bridge0 addm tap0
- @reboot sleep 30 && /bin/bridge.sh
Add Comment
Please, Sign In to add comment
Advertisement