Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Имеется динамический IP по PPPoE от провайдера, надо записать и использовать с *.bat

Ответить
Настройки темы
CMD/BAT - Имеется динамический IP по PPPoE от провайдера, надо записать и использовать с *.bat

Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить PM | Цитировать


Приветствую уважаемые, заранее извиняюсь если подобная тема была, поиск не очень помог Появилась задачка, вот условия: провайдер продает доступ в городскую сеть (с одинаковым адресом с инетом/без него) с динамическим ип по туннелю PPPoE. Наряду с этим в городе есть куча провайдеров, продающие интернет по PPTP, всвязи с этим появилась необходимость автоматизировать настройку маршрутизации между туннелями. Провайдер PPPoE дает на своем сайте свежий список сетей, относящиеся к городу в виде батника (а так же есть текстовая страница, публикуемая на том же сайте, с настраиваемым представлением вывода), см. содержимое, назовем этот батник "routecity.bat"
читать дальше »

route -p ADD 82.200.76.0 MASK 255.255.255.0 %1
route -p ADD 95.174.192.0 MASK 255.255.224.0 %1
route -p ADD 217.8.237.112 MASK 255.255.255.240 %1
route -p ADD 91.210.184.0 MASK 255.255.252.0 %1
route -p ADD 82.200.102.0 MASK 255.255.254.0 %1
route -p ADD 81.1.232.0 MASK 255.255.255.0 %1
route -p ADD 188.65.16.0 MASK 255.255.248.0 %1
route -p ADD 95.170.96.0 MASK 255.255.224.0 %1
route -p ADD 94.251.10.0 MASK 255.255.254.0 %1
route -p ADD 212.107.240.0 MASK 255.255.248.0 %1
route -p ADD 94.251.9.0 MASK 255.255.255.0 %1
route -p ADD 212.192.102.0 MASK 255.255.255.0 %1
route -p ADD 77.235.211.192 MASK 255.255.255.248 %1
route -p ADD 79.175.39.0 MASK 255.255.255.128 %1
route -p ADD 109.227.192.0 MASK 255.255.192.0 %1
route -p ADD 95.170.136.0 MASK 255.255.254.0 %1
route -p ADD 92.50.240.0 MASK 255.255.255.0 %1
route -p ADD 91.210.72.0 MASK 255.255.252.0 %1
route -p ADD 95.170.138.0 MASK 255.255.254.0 %1
route -p ADD 83.229.232.32 MASK 255.255.255.224 %1
route -p ADD 82.200.70.0 MASK 255.255.254.0 %1
route -p ADD 82.200.73.0 MASK 255.255.255.0 %1
route -p ADD 92.63.64.0 MASK 255.255.240.0 %1
route -p ADD 93.91.168.0 MASK 255.255.254.0 %1
route -p ADD 93.91.165.0 MASK 255.255.255.0 %1
route -p ADD 90.189.192.29 MASK 255.255.255.255 %1
route -p ADD 79.122.222.0 MASK 255.255.254.0 %1
route -p ADD 109.124.0.0 MASK 255.255.192.0 %1
route -p ADD 217.18.130.131 MASK 255.255.255.255 %1
route -p ADD 82.200.123.0 MASK 255.255.255.0 %1
route -p ADD 80.89.135.0 MASK 255.255.255.0 %1
route -p ADD 217.79.56.0 MASK 255.255.255.0 %1
route -p ADD 84.237.0.0 MASK 255.255.240.0 %1
route -p ADD 95.191.0.0 MASK 255.255.192.0 %1
route -p ADD 217.79.57.0 MASK 255.255.255.0 %1
route -p ADD 82.200.17.0 MASK 255.255.255.0 %1
route -p ADD 91.193.88.0 MASK 255.255.254.0 %1
route -p ADD 82.200.122.0 MASK 255.255.255.0 %1
route -p ADD 95.170.144.0 MASK 255.255.254.0 %1
route -p ADD 82.200.77.0 MASK 255.255.255.0 %1
route -p ADD 94.251.92.0 MASK 255.255.255.0 %1
route -p ADD 92.126.224.0 MASK 255.255.224.0 %1
route -p ADD 91.211.184.0 MASK 255.255.255.0 %1
route -p ADD 91.211.185.0 MASK 255.255.255.0 %1
route -p ADD 91.211.186.0 MASK 255.255.255.0 %1
route -p ADD 91.211.187.0 MASK 255.255.255.0 %1
route -p ADD 212.107.224.0 MASK 255.255.240.0 %1
route -p ADD 217.8.224.80 MASK 255.255.255.240 %1
route -p ADD 82.200.24.0 MASK 255.255.255.192 %1
route -p ADD 212.192.112.0 MASK 255.255.240.0 %1
route -p ADD 193.106.132.0 MASK 255.255.252.0 %1
route -p ADD 195.211.196.0 MASK 255.255.252.0 %1
route -p ADD 62.64.24.0 MASK 255.255.255.0 %1
route -p ADD 212.192.163.0 MASK 255.255.255.0 %1
route -p ADD 82.200.112.0 MASK 255.255.255.0 %1
route -p ADD 95.170.146.0 MASK 255.255.255.0 %1
route -p ADD 213.228.87.5 MASK 255.255.255.255 %1
route -p ADD 217.70.106.29 MASK 255.255.255.255 %1
route -p ADD 217.70.106.24 MASK 255.255.255.255 %1
route -p ADD 90.188.64.0 MASK 255.255.224.0 %1
route -p ADD 90.188.96.0 MASK 255.255.240.0 %1
route -p ADD 90.188.112.0 MASK 255.255.248.0 %1
route -p ADD 92.125.0.0 MASK 255.255.224.0 %1
route -p ADD 213.210.64.0 MASK 255.255.192.0 %1
route -p ADD 217.18.128.0 MASK 255.255.224.0 %1
route -p ADD 78.136.192.0 MASK 255.255.192.0 %1
route -p ADD 78.139.192.0 MASK 255.255.192.0 %1
route -p ADD 79.136.128.0 MASK 255.255.128.0 %1
route -p ADD 80.89.133.32 MASK 255.255.255.224 %1
route -p ADD 109.123.128.0 MASK 255.255.192.0 %1
route -p ADD 94.28.4.0 MASK 255.255.254.0 %1
route -p ADD 93.91.166.0 MASK 255.255.255.0 %1
route -p ADD 81.1.229.72 MASK 255.255.255.248 %1
route -p ADD 81.1.229.96 MASK 255.255.255.224 %1
route -p ADD 81.1.229.128 MASK 255.255.255.128 %1
route -p ADD 95.170.140.0 MASK 255.255.252.0 %1
route -p ADD 82.200.4.0 MASK 255.255.255.0 %1
route -p ADD 91.211.236.0 MASK 255.255.252.0 %1
route -p ADD 82.200.74.0 MASK 255.255.255.0 %1
route -p ADD 82.200.75.0 MASK 255.255.255.0 %1
route -p ADD 82.200.110.0 MASK 255.255.254.0 %1
route -p ADD 82.200.114.0 MASK 255.255.255.224 %1
route -p ADD 83.172.0.0 MASK 255.255.192.0 %1
route -p ADD 88.204.0.0 MASK 255.255.128.0 %1
route -p ADD 92.243.96.0 MASK 255.255.224.0 %1
route -p ADD 194.226.60.0 MASK 255.255.252.0 %1
route -p ADD 95.170.156.0 MASK 255.255.254.0 %1
route -p ADD 217.106.147.0 MASK 255.255.255.240 %1
route -p ADD 62.68.128.0 MASK 255.255.224.0 %1
route -p ADD 77.106.64.0 MASK 255.255.192.0 %1
route -p ADD 77.245.160.0 MASK 255.255.240.0 %1
route -p ADD 78.140.0.0 MASK 255.255.192.0 %1
route -p ADD 80.72.208.0 MASK 255.255.240.0 %1
route -p ADD 82.117.64.0 MASK 255.255.224.0 %1
route -p ADD 82.117.160.0 MASK 255.255.224.0 %1
route -p ADD 212.73.124.0 MASK 255.255.252.0 %1
route -p ADD 213.183.96.0 MASK 255.255.224.0 %1
route -p ADD 217.29.80.0 MASK 255.255.240.0 %1
который предлагается провайдерами PPTP запускать в "Выполнить" вместе с вручную написанным ип от PPPoE, прочтенным с ipconfig, либо из состояния соединения PPPoE, что есть очень неудобно.
Так вот:
Нужно написать батник/цмд, который бы работал как в XP так и в 7ке, который бы брал ип из интерфейса "PPPoE" и подставлял его вместо %1-переменной в "routecity.bat" - либо переписывал его, либо запускался как единый скрипт не трогая содержимого "routecity.bat".
Ну или вовсе - батник, который брал бы список сетей с текстовой страницы провайдера и подставив ип менял таблицу маршрутизации.

Заранее благодарен помощи, нужда в таком батничке есть у большого количества пользователей данного хитросплетения сетей.

Отправлено: 18:20, 01-04-2010

 

Старожил


Сообщения: 426
Благодарности: 108

Профиль | Отправить PM | Цитировать


Цитата Geleoss:
Нужно определить из какого диапазона шлюз используеться для локальной сети, а конкретно он начинаеться на "10" или на "192.168", после чего записать в файлик настроек (provider.ini) строку с диапазонов IP (10.0.0.0/8 либо 192.168.0.0/16). »
Такие вот времяночки/заплаточки при каких-либо "флуктуациях" настроек сети обычно приводят к непонятным глючкам, вобщем я хотел сказать, что так делать нехорошо.

Вообще, возни с подсчетом маски вышло...
Код: Выделить весь код
@echo off
SetLocal EnableExtensions EnableDelayedExpansion

set Out="provider.ini"
set TMP="%~DPN0.TMP"
del /f %TMP% 2>nul

rem Получаем IP, с которого выход на шлюз по-умолчанию
for /f "tokens=4" %%A in ('route print ^| findstr /r /c:" 0.0.0.0 * 0.0.0.0 "') do (
set A=%%A
set A=!A:.= !
call :ValidateIP !A!
if not ErrorLevel 1 echo %%A>>%TMP%
)
if not exist %TMP% (
Echo Не удалось получить адрес подключения
exit 1
)

rem Ищем адреса сетей
for /f "usebackq tokens=* delims=" %%A in (%TMP%) do (
for /f "tokens=1,2" %%L in ('route print ^| findstr /r /c:" %%A "') do (
set Err=0
set L=%%L
set L=!L:.= !
call :ValidateIP !L!
set /a Err+=!ErrorLevel!
set M=%%M
set M=!M:.= !
call :ValidateIP !M!
set /a Err+=!ErrorLevel!
if "!L!"=="224 0 0 0" set Err=1
if "!M!"=="0 0 0 0" set Err=1
if "!M!"=="255 255 255 255" set Err=1
if !Err!==0 call :CalcMask %%L
)
)

exit

:CalcMask
set /a M="!M:~0,3!<<24 | !M:~4,3!<<16 | !M:~8,3!<<8 | !M:~12,3!"
set Mask=0
:loop
set /a Mask+=1
set /a L="(!M!>>!Mask!)<<!Mask!"
if not !M!==0 if !M!==!L! goto loop
set /a Mask=33-!Mask!
echo %1^/!Mask!>%Out%
)
exit /b

:ValidateIP
set VErr=0
:ValidateIP1
if "%1"=="" exit /b !VErr!
set B=%1
set B=!B:0=!
if not "!B!"=="" if /i %1 LEQ 0 set /A VErr+=1
if /i %1 GEQ 256 set /A VErr+=1
shift
goto ValidateIP1
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:55, 05-04-2010 | #11



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


NiOl
Спасибо большое, хорошо работает.
Неудобно даже просить... Возни с маской оказываеться не надо, моя вина, неправильно указал задачу
Нужно в файлик настроек записвать маску в привычной форме (255.255...).

Отправлено: 17:01, 06-04-2010 | #12


Старожил


Сообщения: 426
Благодарности: 108

Профиль | Отправить PM | Цитировать


Цитата Geleoss:
Нужно в файлик настроек записвать маску в привычной форме (255.255...). »
... паубывалбы

Код: Выделить весь код
@echo off
SetLocal EnableExtensions EnableDelayedExpansion

set Out="provider.ini"
set TMP="%~DPN0.TMP"
del /f %TMP% 2>nul

rem Получаем IP, с которого выход на шлюз по-умолчанию
for /f "tokens=4" %%A in ('route print ^| findstr /r /c:" 0.0.0.0 * 0.0.0.0 "') do (
set A=%%A
set A=!A:.= !
call :ValidateIP !A!
if not ErrorLevel 1 echo %%A>>%TMP%
)
if not exist %TMP% (
Echo Не удалось получить адрес подключения
exit 1
)

rem Ищем адреса сетей
for /f "usebackq tokens=* delims=" %%A in (%TMP%) do (
for /f "tokens=1,2" %%L in ('route print ^| findstr /r /c:" %%A "') do (
set Err=0
set L=%%L
set L=!L:.= !
call :ValidateIP !L!
set /a Err+=!ErrorLevel!
set M=%%M
set M=!M:.= !
call :ValidateIP !M!
set /a Err+=!ErrorLevel!
if "!L!"=="224 0 0 0" set Err=1
if "!M!"=="0 0 0 0" set Err=1
if "!M!"=="255 255 255 255" set Err=1
if !Err!==0 echo %%L %%M>%Out%
)
)

exit

:ValidateIP
set VErr=0
:ValidateIP1
if "%1"=="" exit /b !VErr!
set B=%1
set B=!B:0=!
if not "!B!"=="" if /i %1 LEQ 0 set /A VErr+=1
if /i %1 GEQ 256 set /A VErr+=1
shift
goto ValidateIP1
зы: просто убил процедуру вычисления длины маски и ее вызов заменил на просто вывод результата. Там, гдк выделено жирным - сам вывод результата - можете его внешний вид подправить на свой вкус...

Отправлено: 18:08, 06-04-2010 | #13


Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить PM | Цитировать


NiOl, Добрался я таки до тестируемой машины и что показал тест.. не всегда вычисляется тот самый динамический ип от пппое, скриптом у меня брался локальный так как в route print 2 строки содержащие 0.0.0.0 0.0.0.0, напротив пппое интерфейса и локального соответственно..

Отправлено: 20:36, 13-04-2010 | #14


Старожил


Сообщения: 426
Благодарности: 108

Профиль | Отправить PM | Цитировать


Сюда кидаем результат route print - бум смотреть. (всяких разных вариантов предусмотреть сложно - для примера у меня почти отлаженный скрипт для пинга сети и анализа изменений по логам, проверенный и с несколькими сетевушками и на русских виндах и на семерке вдруг перестал работать при подключении BT-адаптера на моем же компе.)

-------
Как сказало Дерево Дровосеку: "я - пень".


Отправлено: 10:17, 14-04-2010 | #15



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Имеется динамический IP по PPPoE от провайдера, надо записать и использовать с *.bat

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как с помощью bat-ника записать названия папок в текстовый файл? Nun-Nun Скриптовые языки администрирования Windows 9 23-02-2010 20:15
Разное - Имеется файл 4.3 Ггб Alex1964 Накопители (SSD, HDD, USB Flash) 2 14-11-2008 15:59
имеется 64 битная windows XP Smashnin Поиск драйверов, прошивок и руководств 9 17-04-2008 23:44
Два интернет-провайдера, как одновременно использовать? hiagcokrer Сетевые технологии 1 06-04-2007 10:01




 
Переход