LINUX.ORG.RU

История изменений

Исправление Humaxoid, (текущая версия) :

Нашел любопытный скрипт который меняет дефолтовый шлюз в таблице маршрутов при пропадании основного канала. Расписал комментарии так, как сам понял его работу. Понимание не полное, так как скрипт не заработал. Поправьте если что не так.

#!/bin/bash

# Данный скрипт пингует шлюз основного канала и смотрит сколько пингов вернулось.
# Если мы на основном канале и потерялось больше двух пакетов из шести, то переключаемся на резервный.
# Если мы на резервном и на основном потерялось меньше двух пингов, то переключаемся обратно на основной.

GW_DEFAULT="11.22.33.44"  # IP шлюза на основном канале
IF_DEFAULT="eth0"         # Интерфейс основного канала
GW_BACKUP="55.66.77.88"   # IP шлюза на резервном канале
IF_BACKUP="eth2"          # Интерфейс резервного канала

# Определяем текущий шлюз
GW_CURRENT=$(route -n | grep -E "^0.0.0.0 .* UG .*" | awk '{print $2}')

# Пингуем контрольный хост
PINGS=$(ping -c 5 -i .5 -w 6 -I ${IF_DEFAULT} 8.8.8.8 | grep "packets transmitted" | awk '{print $4}')
# Где:
# -c количество пакетов для отправки
# -i интервал в секундах между отправкой пакетов

if [ "${GW_CURRENT}" == "${GW_DEFAULT}" ];   # если текущий шлюз является основным
  then
    if [ "${PINGS}" -le "5" ]; then
        echo "Переход на резервный маршрут"
        route del default
        route add default gw ${GW_BACKUP} ${IF_BACKUP}
    fi
  else
    if [ "${PINGS}" -gt "5" ]; then
      echo "Возврат к основному маршруту"
      route del default
      route add default gw ${GW_DEFAULT} ${IF_DEFAULT}
    fi
fi

Разъясните пожалуйста действие этой строки?

PINGS=$(ping -c 5 -i .5 -w 6 -I ${IF_DEFAULT} 8.8.8.8 | grep "packets transmitted" | awk '{print $4}')
И эти условия
if [ "${PINGS}" -le "5" ];
if [ "${PINGS}" -gt "5" ];
Спасибо большое!

Исходная версия Humaxoid, :

Нашел любопытный скрипт который меняет дефолтовый шлюз в таблице маршрутов при пропадании основного канала. Расписал комментарии так, как сам понял его работу. Понимание не полное, так как скрипт не заработал. Поправьте если что не так.

#!/bin/bash

# Данный скрипт пингует шлюз основного канала и смотрит сколько пингов вернулось.
# Если мы на основном канале и потерялось больше двух пакетов из шести, то переключаемся на резервный.
# Если мы на резервном и на основном потерялось меньше двух пингов, то переключаемся обратно на основной.

GW_DEFAULT="11.22.33.44"  # IP шлюза на основном канале
IF_DEFAULT="eth0"         # Интерфейс основного канала
GW_BACKUP="55.66.77.88"   # IP шлюза на резервном канале
IF_BACKUP="eth2"          # Интерфейс резервного канала

# Определяем текущий шлюз
GW_CURRENT=$(route -n | grep -E "^0.0.0.0 .* UG .*" | awk '{print $2}')

# Пингуем контрольный хост
PINGS=$(ping -c 5 -i .5 -w 6 -I ${IF_DEFAULT} 8.8.8.8 | grep "packets transmitted" | awk '{print $4}')
# Где:
# -c количество пакетов для отправки
# -i интервал в секундах между отправкой пакетов

if [ "${GW_CURRENT}" == "${GW_DEFAULT}" ];   # если текущий шлюз является основным
  then
    if [ "${PINGS}" -le "5" ];
      then
        echo "Переход на резервный маршрут"
        route del default
        route add default gw ${GW_BACKUP} ${IF_BACKUP}
    fi
  else
    if [ "${PINGS}" -gt "5" ]; then
      echo "Возврат к основному маршруту"
      route del default
      route add default gw ${GW_DEFAULT} ${IF_DEFAULT}
    fi
fi
Разъясните пожалуйста действие этой строки?
PINGS=$(ping -c 5 -i .5 -w 6 -I ${IF_DEFAULT} 8.8.8.8 | grep "packets transmitted" | awk '{print $4}')
И этой
if [ "${PINGS}" -le "5" ];
Спасибо большое!