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

Переподключение соединений по приоритету

25.01.2016, 10:50. Просмотров 805. Ответов 4
Метки нет (Все метки)

Добрый день! Я не смог найти ответ по своему вопросу в ранее созданных темах, потому создал эту:

Есть 2 соединения VPN. (впн1 и впн2) впн 2 приоритетное и должно всегда держать соединение. если впн2 пропадает, скрипт должен отключать соединение впн2 и подключать впн1. когда появляется соединение на впн2, он должен отключится от впн1 и подключится обратно к впн2.

Начал писать скрипт, но запнулся об переподключение по приоритету. Может кто-то сталкивался, или помочь сможет. Буду крайне признателен.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
rem 
set conn="vpn" 
set conn2="vpn2"
set login="LOGIN_NAME" 
set pass="PASSWORD" 
set pause=30
:LOOP 
 
set connected2=0 
 
for /f "delims=" %%i in ('rasdial') do ( 
if "%%i"=="%conn2:"=%" set connected2=1 
) 
if %connected2%==0 ( 
echo %date% %time% %conn2% connection not detected. Dialing... 
rasdial %conn2% %login% %pass% 
) else ( 
echo %date% %time% %conn2% connection is active.  
) 
ping -n %pause% 185.138.34.176>nul 2>&1 
 
set connected=0 
 
for /f "delims=" %%i in ('rasdial') do ( 
if "%%i"=="%conn:"=%" set connected=1 
) 
if %connected%==0 ( 
echo %date% %time% %conn% connection not detected. Dialing... 
rasdial %conn% %login% %pass% 
) else ( 
echo %date% %time% %conn2% connection is active. 
) 
ping -n %pause% 71.26.194.219>nul 2>&1 
 
goto LOOP
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2016, 10:50
Ответы с готовыми решениями:

рандом по приоритету
есть база и в ней 2 колонки - слова и во второй числа от 1 до 100 (приоритет), как сделать чтобы...

Ранжирование по приоритету
Здравствуйте, уважаемые пользователи форума.. Подскажите, пожалуйста, как получше проранжировать...

Выполнение по приоритету на МКУ
Имеется устройство administrator storage 2 На него идет очередь с приоритетом 1 Далее в...

GPSS выход из очереди по приоритету
Всем хэллоу, помогите пожалуйста с частью кода...нужна часть -- заявки обслуживаются по принципу...

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

4
alpap
2206 / 1494 / 505
Регистрация: 26.04.2015
Сообщений: 5,061
25.01.2016, 18:21 2
Цитата Сообщение от Okultist Посмотреть сообщение
Windows Batch file
3
set conn2="vpn2"
, правильно значение переменной присваивается так:
Windows Batch file
set "conn2=vpn2"
и тогда запись
Windows Batch file
if "%%i"=="%conn2%"
будет человеческой, если, конечно, разве этого требует задача, но и тогда запись была бы такая:
Windows Batch file
set "conn2="vpn2""
.
1
Okultist
0 / 0 / 0
Регистрация: 14.01.2016
Сообщений: 4
25.01.2016, 18:41  [ТС] 3
Нет, не требует. Спасибо за совет, но скрипт итак работает: тунели создаются, пингуются и самовосстанавливаются. Проблема в том что не знаю как сделать переподключение по приоритету (описал выше в шапке темы).
0
Okultist
0 / 0 / 0
Регистрация: 14.01.2016
Сообщений: 4
27.01.2016, 18:42  [ТС] 4
В итоге справился. Все работает.
Вот скрипт, если кому надо будет:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@echo off
set "conn="test-vpn"" 
set "conn2="test-vpn2""
set login="LOGIN" 
set pass="PASS" 
set pause=15
:LOOP
 
:VPN2
set connected2=0 
 
for /f "delims=" %%i in ('rasdial') do ( 
if "%%i"=="%conn2:"=%" set connected2=1 
) 
if %connected2%==0 ( 
echo %date% %time% %conn2% connection not detected. Dialing... 
rasdial %conn2% %login% %pass% 
)
ping -n %pause% 71.26.194.219>nul 2>&1 
if errorlevel 1 goto VPN
if errorlevel 0 goto VPN2
 
:VPN
set connected=0 
 
rasdial test-vpn2 /d
for /f "delims=" %%i in ('rasdial') do ( 
if "%%i"=="%conn:"=%" set connected=1 
) 
if %connected%==0 ( 
echo %date% %time% %conn% connection not detected. Dialing... 
rasdial %conn% %login% %pass% 
) else ( 
echo %date% %time% %conn2% connection is active. 
) 
ping -n %pause% 71.26.194.219>nul 2>&1  
if errorlevel 0 (
rasdial test-vpn /d
)
 
goto LOOP
Добавлено через 1 минуту
Правда, при потере пинга с VPN2- вместо того чтоб держать соединение с первым VPN- прыгает между ними, пока не опять появится пинг с VPN2, к которому подключается и его держит...

Добавлено через 22 минуты
добавил в конце

Windows Batch file
1
2
3
4
5
6
ping -n %pause% 71.26.194.219>nul 2>&1  
if errorlevel 0 (
rasdial test-vpn /d
) else (
goto VPN
)
не помогло(
0
ComSpec
3414 / 1958 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
27.01.2016, 20:55 5
Лучший ответ Сообщение было отмечено Okultist как решение

Решение

Цитата Сообщение от Okultist Посмотреть сообщение
...добавил в конце

Windows Batch file
1
2
3
4
5
6
ping -n %pause% 71.26.194.219>nul 2>&1  
if errorlevel 0 (
rasdial test-vpn /d
) else (
goto VPN
)
не помогло(
.



У команды "PING" практически отсутствует "stderr", поэтому запись "2>&1" не имеет смысла.

Тем не менее, код ошибки, отличный от нуля, всё же во многих случаях устанавливается, но Ваша запись
Windows Batch file
if errorlevel 0
неверна, поскольку означает "если значение кода возврата не меньше нуля", и, само собой, под это условие попадают и сам ноль, и все положительные значения.

Правильной будет запись
Windows Batch file
if not errorlevel 1
,
но под это условие могут попасть и отрицательные значения кода возврата (будем надеяться, что их не бывает у команды "PING").

Наиболее же точным способом выполнить то или иное действие в зависимости от успешности выполнения команды "PING" является анализ её вывода с помощью команды "FIND":
Windows Batch file
1
ping -n %pause% 71.26.194.219| >nul find/i "TTL="&& rasdial test-vpn /d|| goto VPN
.
2
27.01.2016, 20:55
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2016, 20:55

Определить строку, в которой правильно записан порядок операций по приоритету от высшего к низшему
Помогите определить строку, в которой правильно записан порядок операций по приоритету от высшего к...

Переподключение к БД
Здравствуйте! Использую TIBConnection для подключения к Firebird 2.5. Есть TSQLTransaction и...

Переподключение адаптера
Вообщем нужно (отключить - включить) сетевой адаптер ( модем ) "Скрин" В инете прочитал несколько...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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