Имя:    Пароль:      Помнить меня       
Unsorted   ~  Software  ~  Linux and Unix  ~  [Авиэл] Актуальные маршруты доступа к Home-IX perl, наш ответ AviControl
На страницу 1, 2, 3  »
ZigBee
Сообщение  30 Апр 2009, 20:10  Ссылка : Ответить с цитатой
Возраст: 38 Пол: Мужской  Доверенный пользователь
C нами с 27.06.2005
Репутация: 116.8

Приветствую!

Накатал скриптик, берущий с avicontrol.aviel.ru список подсетей с масками и прописывающий маршруты.
#!/usr/bin/perl
use LWP::Simple qw(!head);
use CGI qw(:standard);

# проверить конфиг и подставить своё ##########################################

$tmpfile= '/tmp/routes.tmp';# временный файл
$route = '/sbin/route'; # путь к route
$gw = '192.168.0.1'; # шлюз

# кончился конфиг :) ##########################################################


getstore("http://avicontrol.aviel.ru/avc.pl?mode=get_routes",$tmpfile);
open (FILE, "$tmpfile") || die "Can't open '$tmpfile': $!\n";
@routes = <FILE>;
close(FILE);

foreach (@routes) {
	chomp;
	if (/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/) {
		$net = $1;
		$netmask = $2;
		$cmd = "$route add -net $net netmask $netmask gw $gw";
		setPrint($cmd,@ARGV[0]);
	}		
}
$cmd = "$route del default";
setPrint($cmd,@ARGV[0]);
$cmd = "$route add default ppp0";
setPrint($cmd,@ARGV[0]);

sub setPrint {
	if ($_[1] eq 'list') {
		print "$_[0]\n";
	}
	else {		
		print "running $_[0]\n";
		if (system("$_[0]") != 0) {				
		print "something wrong..\n";
		}				
	}
}


exit 0;


./get_route.pl list - покажет сгенерированные route add команды,
sudo ./get_route.pl - пропишет маршруты.

В Debian/ubuntu его можно просто положить в /etc/ppp/ip-up.d/ и дать права на выполнение.
В Fedora (да и вообще в любых использующих /etc/ppp/ip-up.local) - либо положить get_routes.pl куда-нибудь в /usr/local/bin и добавить его вызов в /etc/ppp/ip-up.local, либо просто заменить им файл /etc/ppp/ip-up.local.

Для себя буду его дописывать, что б разруливал несколько VPN подключений, я по pptp/l2tp на работу хожу Улыбочка Если кому-нибудь интересно - тоже выложу.

upd:
Для большинства дистрибутивов достаточно сохранить этот скрипт как /etc/ppp/ip-up.local, затем sudo chmod +x /etc/ppp/ip-up.local
Создать в NetworkManager pptp vpn соединение (как это сделать я подробно написал тут, просто вместо п. 4 нужно сохранить скрипт выше в ip-up.local)
Таким образом маршруты будут обновляться каждый раз при поднятии vpn соединения. На сколько я знаю, были случаи, когда из-за неактуальных маршрутов люди "попадали на трафик".


Последний раз редактировалось: ZigBee (01 Май 2009, 0:52), всего редактировалось 1 раз

_____________________________
«Programming is like sex: one mistake and you have to support it for the rest of your life». (Michael Sinz)
В начало
Профиль : Фотоальбом : Личное Сообщение : JabberID : SkypeID : ICQ
Вовчик
Сообщение  30 Апр 2009, 20:29  Ссылка : Ответить с цитатой
Пол: Мужской 
C нами с 23.07.2006
Репутация: 56.4

Ну это тока для сисадминов, для простых "смертных" это не по "зубам". А где, извините, здесь хоть один маршрут обозначен?..
В начало
Профиль : Личное Сообщение
ZigBee
Сообщение  30 Апр 2009, 20:55  Ссылка : Ответить с цитатой
Возраст: 38 Пол: Мужской  Доверенный пользователь
C нами с 27.06.2005
Репутация: 116.8

Вовчик, открой в браузере http://avicontrol.aviel.ru/avc.pl?mode=get_routes
Это список в виде
<подсеть> <маска>

Скрипт загружает этот список, парсит его и формирует команды
/sbin/route add -net <подсеть> netmask <маска> gw <шлюз>
И либо просто показывает их, либо выполняет. Действия для простых смертных описаны для Debian/ubuntu, Fedora. Это не сложней, чем windows-пользователю разобраться с AviControl.

_____________________________
«Programming is like sex: one mistake and you have to support it for the rest of your life». (Michael Sinz)
В начало
Профиль : Фотоальбом : Личное Сообщение : JabberID : SkypeID : ICQ
lava
Сообщение  30 Апр 2009, 21:16  Ссылка : Ответить с цитатой
Пол: Мужской 
C нами с 30.11.2008
Репутация: 60.8

А поконкретней можно действия описать,когда
будет время свободное.
В начало
Профиль : Фотоальбом : Личное Сообщение
ZigBee
Сообщение  30 Апр 2009, 21:38  Ссылка : Ответить с цитатой
Возраст: 38 Пол: Мужской  Доверенный пользователь
C нами с 27.06.2005
Репутация: 116.8

lava, какой у Вас дистрибутив?

_____________________________
«Programming is like sex: one mistake and you have to support it for the rest of your life». (Michael Sinz)
В начало
Профиль : Фотоальбом : Личное Сообщение : JabberID : SkypeID : ICQ
Вовчик
Сообщение  30 Апр 2009, 21:52  Ссылка : Ответить с цитатой
Пол: Мужской 
C нами с 23.07.2006
Репутация: 56.4

ZigBee, не-е-е-е, эт не для меня... Я всего лишь сказал, что то, что ты написал - это для спецов (и для всеобщего обозрения никчему, т.к. для большинства это абракодабра и никто (многие) этим пользоваться нибудут (потому как не смогут), короче - это для специализированных форумов).
В начало
Профиль : Личное Сообщение
_SS_
Сообщение  01 Май 2009, 12:29  Ссылка : Ответить с цитатой
Возраст: 36 Пол: Мужской 
C нами с 24.12.2005
Репутация: 96.9

Сохраняете приведенный текст в файл, даете ему права на исполнение и:
Цитата:

./get_route.pl list - покажет сгенерированные route add команды,
sudo ./get_route.pl - пропишет маршруты.

Всё.
Или Вам не понятно как работает? Я тоже не большой знаток перла (хотя тут как раз всё несложно).
Ну Вы же не изучаете код скажем firefox, а просто пользуетесь.
В начало
Профиль : Личное Сообщение
DALDON
Сообщение  01 Май 2009, 13:20  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.04.2005
Репутация: 0.1

Вообще конечно очень удивляет почему Aviel не сделает никак всё это дело автоматически... Ни адресов ни маршрутов раздать не могут... Ужас.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение
LeXxiK
Сообщение  01 Май 2009, 13:29  Ссылка : Ответить с цитатой
Возраст: 37 Пол: Мужской  Доверенный пользователь
C нами с 23.01.2005
Репутация: 203.8

DALDON, +100. Раньше хоть батник в статистике был. Видимо, сделать его автообновляемым и со всеми актуальными маршрутами для них непосильная задача. Фрилансера бы наняли, рублей за 500 и полчаса времени всё бы сделал.
В начало
Профиль : Блог : Личное Сообщение : JabberID
AlexTitov
Сообщение  01 Май 2009, 15:47  Ссылка : Ответить с цитатой
Пол: Мужской 
C нами с 26.03.2006
Репутация: 69

ZigBee писал(а):
Приветствую!

Накатал скриптик, берущий с avicontrol.aviel.ru список подсетей с масками и прописывающий маршруты.


Для простоты можно обрезать в нескольких местах Улыбочка

Вместо
getstore("http://avicontrol.aviel.ru/avc.pl?mode=get_routes",$tmpfile);
open (FILE, "$tmpfile") || die "Can't open '$tmpfile': $!\n";
@routes = <FILE>;
close(FILE);

достаточно
$data = get("http://avicontrol.aviel.ru/avc.pl?mode=get_routes");

Тогда дальше вместо
foreach (@routes) {
	chomp;
	if (/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/) {
		$net = $1;
		$netmask = $2;

можно вот так:
foreach (split "\n", $data) {
	next if ($rv) = /rv=(\d+)/;
	($net, $mask) = split ' ';


А если запускать его часто (т.к. маршруты обновляются несколько раз в день), то хорошо бы запоминать значение $rv и потом употреблять его при очередном вызове скрипта. То есть, например, вот так:
$data = get("http://avicontrol.aviel.ru/avc.pl?mode=get_routes&rv=$rv");

При этом ответ может быть result=no_changes
что означает, что обновления маршрутов не требуется.
В начало
Профиль : Личное Сообщение
ZigBee
Сообщение  01 Май 2009, 16:29  Ссылка : Ответить с цитатой
Возраст: 38 Пол: Мужской  Доверенный пользователь
C нами с 27.06.2005
Репутация: 116.8

AlexTitov, спасибо за поправки!
На счет get/getstore - согласен, небрежно получилось Улыбочка

О том какой может быть result - я не знал. Линк мне дали в ответе на один из тикетов, варианты возвращаемых значений при этом не назвали.

По поводу:
foreach (split "\n", $data) {
	next if ($rv) = /rv=(\d+)/;
	($net, $mask) = split ' ';

У меня был такой вариант, но решил таки проверять похожесть на IP/маску, чтобы позже сделать нормальную проверку валидности. Я неоднократно наблюдал в этом списке ерунду вместо маски сети, /sbin/route не принимал значение.

4All
Кто проверял/использует скрипт - отпишитесь, работает ли. У меня есть подозрения, что модуль LWP::Simple есть не всегда. Ну и пожелания, разумеется. Может доведем вместе до работоспособного состояния в любых дистрибутивах Улыбочка

_____________________________
«Programming is like sex: one mistake and you have to support it for the rest of your life». (Michael Sinz)
В начало
Профиль : Фотоальбом : Личное Сообщение : JabberID : SkypeID : ICQ
XAMyT
Сообщение  01 Май 2009, 18:22  Ссылка : Ответить с цитатой
Возраст: 37 Пол: Мужской 
C нами с 18.10.2005
Репутация: 172.8

Параметр &rv=1241181612 = версия роутов?
Что за новый параметр refresh ?

ps. Наблюдаю что последние номера версий роутов
1240971613
1241022013
1241181612
Различаются цифрами, но начинка одна и таже. Почему тогда новая версия?
В начало
Профиль : Личное Сообщение
AlexTitov
Сообщение  01 Май 2009, 20:26  Ссылка : Ответить с цитатой
Пол: Мужской 
C нами с 26.03.2006
Репутация: 69

XAMyT писал(а):
Что за новый параметр refresh ?

Рекомендуемое время в секундах перед следующим запросом маршрутов
XAMyT писал(а):
Параметр &rv=1241181612 = версия роутов?
ps. Наблюдаю что последние номера версий роутов
1240971613
1241022013
1241181612
Различаются цифрами, но начинка одна и таже. Почему тогда новая версия?

Да, версия. Если начинка не меняется, номер версии тоже меняться не должен. Видимо, между этими номерами были ещё версии с другой начинкой. Ведь обычно изменения маршрутов сводятся к тому, что какой-то маршрут исчезает из HOME-IX на время, а потом снова возвращается.
В начало
Профиль : Личное Сообщение
hobgoblin
Сообщение  23 Июл 2009, 14:47  Ссылка : Ответить с цитатой
Возраст: 41 Пол: Мужской 
C нами с 16.07.2007
Репутация: 46.1

DALDON писал(а):
Вообще конечно очень удивляет почему Aviel не сделает никак всё это дело автоматически... Ни адресов ни маршрутов раздать не могут... Ужас.
95..99% пользователям авиельки это всё равно у них виндус. Ответ на "почему" вытекает из наличия этих 95..99% и на полный побарабизм в отношении остальных.

_____________________________
POISON FREE
В начало
Профиль : Личное Сообщение : JabberID
DALDON
Сообщение  23 Июл 2009, 17:03  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.04.2005
Репутация: 0.1

hobgoblin, при чём тут это..? Или Вы думаете, что пользователи Windows не звонят в ТП с вопросами по маршрутам..? - Не будем флудить. Речь не о Windows.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение
Показать сообщения:   
На страницу 1, 2, 3  »

Unsorted   ~  Software  ~  Linux and Unix  ~  [Авиэл] Актуальные маршруты доступа к Home-IX

Ответить на тему

Перейти:  





Powered by phpBB   © Unsorted Team  support@unsorted.me  promo@unsorted.me  Полезные скрипты