The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Обнаружение упавших интерфейсов и рутеров"
Отправлено XoRe, 30-Июл-05 12:14 
Привожу скрипт (точнее его версию для публикации здесь), который проверяет работоспособность каналов до двух разных провайдеров, и, если надо, меняет маршрут по умолчанию.
Точнее меняет, если до одного провайдера начинает доходить меньше 50% пингов.
Да, скрипт просто ингует сначала один шлюз, потом другой.
Скрипт работает на FreeBSD 5.1.
В этой системе таблица маршрутов смотрится командой netstat -rn.
Маршруты добавляются и удаляются статически командами
route add адрес шлюз
route delete адрес
route add default и route delete default - ставит и убирает маршрут по умолчанию.
Как я понимаю, в linux для этого используются свои программы.

---------------------
#!/usr/bin/perl

open (OLD, '/usr/bin/netstat -rn | /usr/bin/grep default |') or die 'Can\'t open pipe';
while ($line = <OLD>)
{
        ($def, $old) = (split(/[\s\t]+/, $line))[0,1];
        last if ($def eq 'default');
}
close OLD;

$ip{one} = '1.1.1.1';
$ip{two} = '2.2.2.2';

$name{'1.1.1.1'} = 'one';
$name{'2.2.2.2'} = 'two';

die "$old - unknown route\n" unless exists $name{$old};

$old = $name{$old};

while($adr = (each %ip)[0])
{
$line = (`/sbin/ping -q -c 20 $ip{$adr}`)[3];
chomp $line;
($ping{$adr}) = $line =~ /(\d+)%/;
$ping{$adr} = 100 if($ping{$adr} eq '');
$ping{$adr} = 100 - $ping{$adr};
}

if($ping{one} >= 50)   { $route = 'one'; }
else                { $route = 'two'; }

#`/bin/date >> /usr/local/stat/traf/route.log`;
#open(FILE,">> /usr/local/stat/traf/route.log") or exit;
#print qq~
#To global-iks: $ping{one}%
#To global-dsv: $ping{two}%
#Were route: '$old'
#Now route: '$route'
#---
#~;
#close FILE;

if($old ne $route)
{

        `/sbin/route delete default`;
        `/sbin/route add default $ip{$route}`;
}

exit;
---------------------

У меня примерно такой скрипт работает уже около года.
Насчет BGP и прочих протоколов - не забывайте, что один канал у автора темы организован через ppp.
А ppp - это point to point, т.е. никаких протоколов такого типа, насколько я понимаю, в нем не предусматривается.

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.

На сайте действует частичное премодерирование - после публикации некоторые сообщения от анонимов могут автоматически скрываться ботом. После проверки модератором ошибочно скрытые сообщения раскрываются. Для ускорения раскрытия можно воспользоваться ссылкой "Сообщить модератору", указав в качестве причины обращения "скрыто по ошибке".



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру