|
|
Возраст: 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)
|
|
|
|
|
|
|
C нами с 23.07.2006 Репутация: 56.4
|
|
Ну это тока для сисадминов, для простых "смертных" это не по "зубам". А где, извините, здесь хоть один маршрут обозначен?..
|
|
|
|
|
|
|
|
Возраст: 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)
|
|
|
|
|
|
|
C нами с 30.11.2008 Репутация: 60.8
|
|
А поконкретней можно действия описать,когда
будет время свободное.
|
|
|
|
|
|
|
|
Возраст: 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)
|
|
|
|
|
|
|
C нами с 23.07.2006 Репутация: 56.4
|
|
ZigBee, не-е-е-е, эт не для меня... Я всего лишь сказал, что то, что ты написал - это для спецов (и для всеобщего обозрения никчему, т.к. для большинства это абракодабра и никто (многие) этим пользоваться нибудут (потому как не смогут), короче - это для специализированных форумов).
|
|
|
|
|
|
|
|
Возраст: 36 C нами с 24.12.2005 Репутация: 96.9
|
|
Сохраняете приведенный текст в файл, даете ему права на исполнение и:
Цитата: |
./get_route.pl list - покажет сгенерированные route add команды,
sudo ./get_route.pl - пропишет маршруты.
|
Всё.
Или Вам не понятно как работает? Я тоже не большой знаток перла (хотя тут как раз всё несложно).
Ну Вы же не изучаете код скажем firefox, а просто пользуетесь.
|
|
|
|
|
|
|
|
C нами с 09.04.2005 Репутация: 0.1
|
|
Вообще конечно очень удивляет почему Aviel не сделает никак всё это дело автоматически... Ни адресов ни маршрутов раздать не могут... Ужас.
|
|
|
|
|
|
|
|
Возраст: 37 C нами с 23.01.2005 Репутация: 203.8
|
|
DALDON, +100. Раньше хоть батник в статистике был. Видимо, сделать его автообновляемым и со всеми актуальными маршрутами для них непосильная задача. Фрилансера бы наняли, рублей за 500 и полчаса времени всё бы сделал.
|
|
|
|
|
|
|
|
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
что означает, что обновления маршрутов не требуется.
|
|
|
|
|
|
|
|
Возраст: 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)
|
|
|
|
|
|
|
Возраст: 37 C нами с 18.10.2005 Репутация: 172.8
|
|
Параметр &rv=1241181612 = версия роутов?
Что за новый параметр refresh ?
ps. Наблюдаю что последние номера версий роутов
1240971613
1241022013
1241181612
Различаются цифрами, но начинка одна и таже. Почему тогда новая версия?
|
|
|
|
|
|
|
|
C нами с 26.03.2006 Репутация: 69
|
|
XAMyT писал(а): |
Что за новый параметр refresh ?
|
Рекомендуемое время в секундах перед следующим запросом маршрутов
XAMyT писал(а): |
Параметр &rv=1241181612 = версия роутов?
ps. Наблюдаю что последние номера версий роутов
1240971613
1241022013
1241181612
Различаются цифрами, но начинка одна и таже. Почему тогда новая версия?
|
Да, версия. Если начинка не меняется, номер версии тоже меняться не должен. Видимо, между этими номерами были ещё версии с другой начинкой. Ведь обычно изменения маршрутов сводятся к тому, что какой-то маршрут исчезает из HOME-IX на время, а потом снова возвращается.
|
|
|
|
|
|
|
|
Возраст: 41 C нами с 16.07.2007 Репутация: 46.1
|
|
DALDON писал(а): |
Вообще конечно очень удивляет почему Aviel не сделает никак всё это дело автоматически... Ни адресов ни маршрутов раздать не могут... Ужас.
|
95..99% пользователям авиельки это всё равно у них виндус. Ответ на "почему" вытекает из наличия этих 95..99% и на полный побарабизм в отношении остальных.
|
_____________________________ POISON FREE
|
|
|
|
|
|
|
C нами с 09.04.2005 Репутация: 0.1
|
|
hobgoblin, при чём тут это..? Или Вы думаете, что пользователи Windows не звонят в ТП с вопросами по маршрутам..? - Не будем флудить. Речь не о Windows.
|
|
|
|
|
|
|
|