Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.79/19: Рейтинг темы: голосов - 19, средняя оценка - 4.79
Hafnium
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 7
1

Авто-запуск VPN соединения, вычисление назначенного IP сервером DHCP, перемещение значения в текстовый документ.

25.10.2011, 20:59. Просмотров 3653. Ответов 12
Метки нет (Все метки)

Доброго времени суток форумчане и спецы!
Хотел бы попросить о помощи незначительной, суть задачи такова:
1. Автоматический запуск VPN соединения при включении ПК и ежечасное пере подсоединение (runvpn.cmd) [Решено]
2. "Выдернуть" значение присвоенного DHCP сервером IP и поместить в определенную строку в текстовом документе.

P.S. Как я это вижу:
Запуск bat'ника или cmd'шки с параметром ipconfig /all, далее процесс "выдергивания" (вот в этом и вопрос) IP'шника как он есть, затем поместить в определенную строку существующего текстового документа (*.txt).

P.S.S. Первый этап решил достаточно просто следующим образом:
1.Создал cmd'шку:

@echo off
:connect
rasdial "name_connection" login pass
if ERRORLEVEL 619 goto connect

2.Добавил в планировщик задач данную cmd'шку по расписанию при включении и повторяя каждый час. Если соединение не отвалилось, то повторный запуск не критичен и пройдет незаметно, если отвалилось, то спокойно запуститься. Этот шаг конечно баловство и халтура, но спасает, так было проще и быстрее, если предложите другой вариант - буду признателен!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2011, 20:59
Ответы с готовыми решениями:

Linux DHCP + DHCP Relay Win2003(vpn)
Всем привет. У меня проблема. Когда линукс клиент подключается к виндовому VPN серверу, ему...

Проблема с DHCP сервером
Всех приветствую. У меня есть пару вопросов. 1) У меня идет тупизм, с раздачей интернета и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
atributz
833 / 347 / 12
Регистрация: 04.10.2009
Сообщений: 589
25.10.2011, 21:48 2
Это соединение в интернет идет?
1
Hafnium
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 7
25.10.2011, 21:54  [ТС] 3
Через интернет. Осуществляется дозвон к прямому IP'шнику. Далее осуществляется работа внутри сети.
0
atributz
833 / 347 / 12
Регистрация: 04.10.2009
Сообщений: 589
25.10.2011, 23:09 4
"Выдернуть" значение присвоенного DHCP сервером IP и поместить в определенную строку в текстовом документе.

Узнать значение IP можно но вот разместить в текстовом документе это то зачем?
Как по мне это не очень хороший вариант для кода.

Если вам надо в код подставлять ip то лучше читать его тогда из отдельного файла. Или узнавать сразу в коде.

Получение ip основного шлюза
Bash
1
2
for /f "tokens=3" %%i in ('route print 0.0.0.0 ^| findstr /r /c:"[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do set ip=%%i
echo %ip%
если vpn основной шлюз то значит получите его ip
1
25.10.2011, 23:09
Hafnium
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 7
26.10.2011, 00:20  [ТС] 5
Спасибо, очень кстати, завтра попробую!
"Выдернутое" значение IP'шника необходимо подставить в определенную строку текстового документа необходимо с целью последующего использования. Конкретно это не *.txt, а *.vnc.

Идея заключается в следующем:
1.1 Подключение по VPN.
1.2 Запускается скрипт "выдергивания" IP'шника.
1.3 Запускается скрипт подстановки IP'шника в текстовый документ, но с расширением *.vnc.

2.1 Затем, при необходимости, открывая сетевой каталог "n:\" с ПК являющимся участником сети, там можно будет наблюдать один или несколько "актуальных" файлов *.vnc с корректным IP'шником.
2.2 Ну далее просто запуск файла *.vnc.

P.S. С rAdmin'ом, WinRDP, DameWare, TeamViewer'ом и прочими знаком и очень хорошо, но необходим именно такой способ. Так же необходимо чтобы IP'шники небыли привязаны и соответственно раздавались DHCP сервером.
0
Hafnium
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 7
27.10.2011, 00:25  [ТС] 6
Товарищи, отзовитесь!
0
atributz
833 / 347 / 12
Регистрация: 04.10.2009
Сообщений: 589
27.10.2011, 11:10 7
ну мы же с пунктами
1.1 Подключение по VPN.
1.2 Запускается скрипт "выдергивания" IP'шника
разобрались

ну а 1.3 Запускается скрипт подстановки IP'шника в текстовый документ, но с расширением *.vnc.
нужно хотя бы знать что там содержится или вместо чего подставлять
1
Hafnium
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 7
27.10.2011, 12:37  [ТС] 8
Собственно содержимое файла:

[connection]
host=192.168.1.50
port=5900
proxyhost=
proxyport=5900
password=***
[options]
use_encoding_0=1
use_encoding_1=1
use_encoding_2=1
use_encoding_3=0
use_encoding_4=1
use_encoding_5=1
use_encoding_6=1
use_encoding_7=1
use_encoding_8=1
use_encoding_9=1
use_encoding_10=0
use_encoding_11=0
use_encoding_12=0
use_encoding_13=0
use_encoding_14=0
use_encoding_15=0
use_encoding_16=1
use_encoding_17=1
preferred_encoding=5
restricted=0
viewonly=0
nostatus=0
nohotkeys=0
showtoolbar=1
AutoScaling=1
fullscreen=0
autoDetect=1
8bit=0
shared=1
swapmouse=0
belldeiconify=0
emulate3=1
JapKeyboard=0
emulate3timeout=100
emulate3fuzz=4
disableclipboard=0
localcursor=1
Scaling=1
scale_num=65
scale_den=100
cursorshape=1
noremotecursor=0
compresslevel=6
quality=6
ServerScale=1
Reconnect=0
EnableCache=0
QuickOption=8
UseDSMPlugin=0
UseProxy=0
sponsor=0
DSMPlugin=NoPlugin
ExitCheck=0
FileTransferTimeout=30
KeepAliveInterval=5
AutoAcceptIncoming=0
AutoAcceptNoDSM=0

Добавлено через 58 секунд
Подставлять разумеется надо в строчку "host=192.168.1.50"
0
atributz
833 / 347 / 12
Регистрация: 04.10.2009
Сообщений: 589
27.10.2011, 13:36 9
Bash
1
2
3
4
5
6
7
8
9
10
11
12
set fname=1.vnc
setlocal enabledelayedexpansion
for /f "tokens=3" %%i in ('route print 0.0.0.0 ^| findstr /r /c:"[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do set ip=%%i
if "%ip%"=="" exit
if exist log.tmp del log.tmp
for /f %%i in (%fname%) do (
set n=%%i
set n=!n:~0,5!
if "!n!"=="host=" (echo host=%ip%>>log.tmp) else (echo %%i>>log.tmp)
)
del %fname%
move log.tmp %fname%
1
Hafnium
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 7
02.11.2011, 16:34  [ТС] 10
И снова доброго времени суток. В целом помогло, но все же не до конца.
IP'шник выдергивается за счет route print, но во первых выдергивает он адрес шлюза локалки, а не IP'шник, во вторых необходимо "выдергивать" IP'шник VPN соединения.

Пример:
C:\Users\User>route print
===========================================================================
Список интерфейсов
50...........................VPN Server
11...00 1b fc dc 79 f1 ......Atheros L1 Gigabit Ethernet 10/100/1000Base-T Controller
1...........................Software Loopback Interface 1
43...00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP #2
44...00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP #3
15...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface
===========================================================================

IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.100 20
*.*.*.* 255.255.255.255 192.168.0.1 192.168.0.100 21
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
192.168.0.0 255.255.255.0 On-link 192.168.0.100 276
192.168.0.100 255.255.255.255 On-link 192.168.0.100 276
192.168.0.255 255.255.255.255 On-link 192.168.0.100 276
192.168.1.0 255.255.255.0 192.168.1.1 192.168.1.51 21
192.168.1.51 255.255.255.255 On-link 192.168.1.51 276*
224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
224.0.0.0 240.0.0.0 On-link 192.168.0.100 276
224.0.0.0 240.0.0.0 On-link 192.168.1.51 276
255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
255.255.255.255 255.255.255.255 On-link 192.168.0.100 276
255.255.255.255 255.255.255.255 On-link 192.168.1.51 276
===========================================================================

*-Вот этот адрес надо "выдернуть"
0
atributz
833 / 347 / 12
Регистрация: 04.10.2009
Сообщений: 589
02.11.2011, 17:34 11
Я думал это у вас интернет подключение через VPN, а вы похоже подключаетесь к удаленной сети через VPN. Буду думать дальше.
0
buggydancer
250 / 238 / 16
Регистрация: 31.12.2009
Сообщений: 324
02.11.2011, 19:38 12
это ничего если я вклинюсь в вашу беседу? представляется что можно ловить строку route не по четырем нулям в айпи а по трем цифрам 192.168.1 видимо из этого пула dhcp сервер раздает адреса, т.е. можно попробовать так:
Код
for /f "tokens=4" %%i in ('route print 192.168.1 ^| findstr /r /c:"[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do set ip=%%i
главное не поймать адрес шлюза. попробуйте так

Добавлено через 16 минут
наверное все таки так:
Код
for /f "tokens=4" %%i in ('route print 192.168.1.0 ^| findstr /r /c:"[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do set ip=%%i
1
Hafnium
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 7
03.11.2011, 01:26  [ТС] 13
Огромнейшее Вам (atributz и buggydancer) человеческое СПАСИБО!
Действительно вылавливая таким способом как:

Код
for /f "tokens=4" %%i in ('route print 192.168.1.0 ^| findstr /r /c:"[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do set ip=%%i
Всё проходит на ура! и нужное значение подставляется корректно, наконец-то я счастлив. В целом можно тему закрывать, но откровенно говоря у меня есть еще некоторые "интересные" вопросы. Просто хотелось бы собрать в кучу всю идею, в один инсталятор. Завтра опишу как я хотел бы видеть свой маленький пакет. Если удастся внедрить в массы и получать от этого вознаграждение, то с удовольствием с Вами поделюсь.
0
03.11.2011, 01:26
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru