|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Имеется динамический IP по PPPoE от провайдера, надо записать и использовать с *.bat |
|
CMD/BAT - Имеется динамический IP по PPPoE от провайдера, надо записать и использовать с *.bat
|
Новый участник Сообщения: 16 |
Приветствую уважаемые, заранее извиняюсь если подобная тема была, поиск не очень помог
![]() который предлагается провайдерами PPTP запускать в "Выполнить" вместе с вручную написанным ип от PPPoE, прочтенным с ipconfig, либо из состояния соединения PPPoE, что есть очень неудобно. Так вот: Нужно написать батник/цмд, который бы работал как в XP так и в 7ке, который бы брал ип из интерфейса "PPPoE" и подставлял его вместо %1-переменной в "routecity.bat" - либо переписывал его, либо запускался как единый скрипт не трогая содержимого "routecity.bat". Ну или вовсе - батник, который брал бы список сетей с текстовой страницы провайдера и подставив ип менял таблицу маршрутизации. Заранее благодарен помощи, нужда в таком батничке есть у большого количества пользователей данного хитросплетения сетей. |
|
Отправлено: 18:20, 01-04-2010 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Цитата Geleoss:
Вообще, возни с подсчетом маски вышло... @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
|
Профиль | Отправить PM | Цитировать NiOl
Спасибо большое, хорошо работает. ![]() Неудобно даже просить... Возни с маской оказываеться не надо, моя вина, неправильно указал задачу ![]() Нужно в файлик настроек записвать маску в привычной форме (255.255...). |
Отправлено: 17:01, 06-04-2010 | #12 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Цитата Geleoss:
![]() ![]() @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
|
Профиль | Отправить PM | Цитировать NiOl, Добрался я таки до тестируемой машины и что показал тест.. не всегда вычисляется тот самый динамический ип от пппое, скриптом у меня брался локальный
![]() |
Отправлено: 20:36, 13-04-2010 | #14 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Сюда кидаем результат route print - бум смотреть. (всяких разных вариантов предусмотреть сложно - для примера у меня почти отлаженный скрипт для пинга сети и анализа изменений по логам, проверенный и с несколькими сетевушками и на русских виндах и на семерке вдруг перестал работать при подключении BT-адаптера на моем же компе.)
|
------- Отправлено: 10:17, 14-04-2010 | #15 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|