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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Проблемы с автоматизацией запуска VPN

Ответить
Настройки темы
Любой язык - [решено] Проблемы с автоматизацией запуска VPN

Аватара для AlSar163

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


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


Конфигурация

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


Изменения
Автор: AlSar163
Дата: 18-09-2014
Описание: Дополнение
Здравствуйте, уважаемые участники форума OSzone.net!

Передо мной встала такая задача: создать способ автоматического запуска VPN-соединения
для подключения к интернету после включения ПК, который бы удовлетворял следующим критериям:
1) был бы универсален для WinXP x86 и Win7 x64;
2) срабатывал бы сразу при запуске ОС, еще до входа в систему, стабильно и гарантированно в 100% случаев;
3) не выводил бы никаких окон, не вылазил бы в трее и вообще никак бы себя не проявлял;
4) был бы максимально изящным решением и настраивался после установки ОС буквально в несколько кликов.

Изучив много источников в интернете по этому вопросу, я конечно же отмел примитивное
помещение ярлыков в автозагрузку, не удовлетворяющее критерию №2, работу с планировщиком
задач, не подходящую по критерию №4, вызов rasdial при помощи bat-файлов, не устраивающий
по критерию №3 и остановился на решении данного вопроса при помощи создания твика реестра.

Для того, чтобы обеспечить критерий №3, я худо-бедно ознакомился с VBS-скриптами,
и создал скрипт обращения к rasdial, наиболее простой по виду, даже не знаю, можно ли еще что-то упростить.
Содержание скрипта PROVIDER.vbs следующее (предполагая подключение PROVIDER по логину login и паролю pass):
Код: Выделить весь код
CreateObject("WScript.Shell").Run "rasdial PROVIDER login pass", 0, false
Скрипт успешно заработал, и я перешел к процессу автоматизации его исполнения. Для этой цели я сперва
разместил PROVIDER.vbs в папке system32, а затем создал твик реестра PROVIDER.reg такого содержания:
Код: Выделить весь код
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
"PROVIDER"="PROVIDER.vbs"
И на данном этапе я и столкнулся с проблемами. VPN-соединение подключается, но через раз.
Я пробовал обращаться к VBS-скрипту по разному, напрямую и через wscript, такими способами:
Код: Выделить весь код
"PROVIDER"="PROVIDER.vbs"
"PROVIDER"="C:\\WINDOWS\\System32\\PROVIDER.vbs"
"PROVIDER"="wscript PROVIDER.vbs"
"PROVIDER"="wscript.exe PROVIDER.vbs"
"PROVIDER"="C:\\WINDOWS\\System32\\wscript.exe PROVIDER.vbs"
"PROVIDER"="C:\\WINDOWS\\System32\\wscript.exe C:\\WINDOWS\\System32\\PROVIDER.vbs"
Но никакой из этих способов не приводил к гарантированной работе. Примерно в 50% случаев
соединение устанавливалось почти сразу, а другая половина запусков ОС была безуспешна.
Интуиция подсказывает, что решение срабатывает тогда, когда уже успела проинициализироваться
локальная сеть, и надо как-то связать этот процесс с запуском скрипта.
Тогда я решил попробовать пойти путем создания системной службы, написав такой файл PROVIDER.bat:
Код: Выделить весь код
sc create PROVIDER start= auto binPath= "rasdial PROVIDER login pass" DisplayName= "PROVIDER" depend= lanmanworkstation obj= "NT AUTHORITY\LocalService"
Однако и в этот раз - фиаско. Хотя служба успешно создается, и есть зависимость от "Рабочей станции",
но в отличие от 50%-ной работы ссылки в реестре не работает вообще.
Журнал событий Windows выдает последовательно следующую пару ошибок:
№1:
Превышение времени ожидания (30000 мс) при ожидании подключения службы "PROVIDER".
№2:
Сбой при запуске службы "PROVIDER" из-за ошибки
Служба не ответила на запрос своевременно.


Дальнейшие поиски по данному вопросу ни к чему не привели. Предлагался только кривой вариант в виде создания
задержки bat-файлом, минуту пингуя несуществующий локальный IP-адрес, но это же полная чушь...

Обращаюсь к вам, уважаемые форумчане.
Какова ошибка в моих действиях?
Правильно ли предположение о том, что скрипт не работает из-за отсутствия корреляции с lanmanworkstation?
Что же мне предпринять, как создать рабочую службу или хотя бы правильный твик реестра?

Заранее спасибо за внимание.
С уважением, Александр.

P.S. В данный момент тестирую на Win7 Ultimate SP1 x64.

UPD

Я продолжаю экспериментировать, но безуспешно.
По совету товарища попробовал переписать PROVIDER.reg с HKLM на HKCU, вроде бы ветка считывается попозже.
Но так же, как и в случае с HKLM, запускается все равно через раз.
Затем я попробовал создать службу с указанием не rasdial, a скрипта:
Код: Выделить весь код
binPath= "wscript PROVIDER.vbs"
Все продолжилось с теми же ошибками. Добавление в зависимости lanmanserver тоже не привело к успеху.

Я теряюсь в догадках, что еще можно сделать в этом положении...

Отправлено: 14:25, 18-09-2014

 

Аватара для AlSar163

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


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

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


Проблему удалось решить неожиданно простым способом.
Создал службу, как и раньше, но прописал обращение не к rasdial, а к имеющемуся скрипту.
Ну и для автоматизации прописал копирование скрипта в System32. Получился такой bat-файл:
Код: Выделить весь код
copy PROVIDER.vbs %windir%\System32\PROVIDER.vbs
sc create PROVIDER start= auto binPath= "wscript PROVIDER.vbs" depend= lanmanworkstation obj= "NT AUTHORITY\LocalService" DisplayName= "PROVIDER"
Недостаток - в "Журнале событий" все равно выдается та же самая пара ошибок, не устраняемая даже если задать перезапуски при сбое.
Достоинство - это гарантированно работает, соблюдая все мои критерии и устанавливается в один двойной клик.
Проблему можно считать решенной, а тему - закрыть. Жаль, правда, что никто так и не высказался по этой проблеме.

С уважением, Александр.

Отправлено: 21:40, 19-09-2014 | #2



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

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


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


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

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


AlSar163, к сожалению ваш способ у меня не сработал. Появляется всё та же пара ошибок:
«Превышение времени ожидания (30000 мс) при ожидании подключения службы «vpn».»
«Сбой при запуске службы «vpn» из-за ошибки
Служба не ответила на запрос своевременно.»

Отправлено: 17:34, 22-09-2014 | #3


Аватара для AlSar163

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


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

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


Lyrot, у меня тоже сохраняется эта пара ошибок. Но почему-то подключение срабатывает.
У вас сам скрипт при запуске вручную работает?

Отправлено: 01:48, 10-10-2014 | #4


Пользователь


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

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


Цитата AlSar163:
Интуиция подсказывает, что решение срабатывает тогда, когда уже успела проинициализироваться
локальная сеть, и надо как-то связать этот процесс с запуском скрипта. »
Попробуйте задать в параметрах локальной политики "Ждать сеть при запуске и входе в систему" Конфигурация компьютера\Административные шаблоны\Система\Вход в систему\Всегда ждать запуска сети при запуске и входе в систему

Отправлено: 08:49, 10-10-2014 | #5


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


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

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


Долго искал решение задачи подключения VPN из командной строки в cmd/bat скрипте.

Одно из условий: не оперировать в скрипте логином и паролем т.к. это очень ненадежно, к тому же они могут изменяться.

В итоге сделал просто: Создал ярлык для VPN подключения, обозвал его MaglanInternet.lnk, положил в один каталог с батником и при необходимости подключить vpn из батника делаю это командой:
Код: Выделить весь код
start MaglanInternet.lnk
Если возникает необходимость отключить vpn из скрипта, делаю это командой:
Код: Выделить весь код
rasdial "MaglanInternet" /DISCONNECT
*Где "MaglanInternet" - название vpn подключения.


Что касательно задачи автора поста, то можно было создать ярлык vpn подключения и скопировать его в аутозагрузку. А чтобы не выводилось никаких окон и сообщения достаточно в свойствах этого подключения снять соответствующие галочки.

Примечательно что командами
Код: Выделить весь код
netsh interface set interface "ИМЯПОДКЛЧЮЕНИЯ" disabled
netsh interface set interface "ИМЯПОДКЛЧЮЕНИЯ" enable
можно включать и выключать практически любые соединения кроме VPN.

Отправлено: 11:56, 11-10-2014 | #6


Аватара для AlSar163

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


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

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


zhuk09, а разве зависимость от lanmanworkstation - это не то же самое?
И да, исходная задача состояла в том, чтобы автоматизация настраивалась в пару кликов после установки. А не путем лазанья в политиках, планировщиках и т.п.

God_Zilla, ну в моем случае логин\пароль неизменны уже более 5 лет, если уж изменятся, можно и отредактировать скрипт. А насчет надежности... Ну у меня ничего не расшарено, Wi-Fi не раздаю, просто одно подключение для одного ПК, тут не вижу какой-то особой проблемы.
Цитата God_Zilla:
Что касательно задачи автора поста, то можно было создать ярлык vpn подключения и скопировать его в аутозагрузку. А чтобы не выводилось никаких окон и сообщения достаточно в свойствах этого подключения снять соответствующие галочки. »
Ну вы сейчас просто Капитана Очевидность отыграли, хех. Как бы этот способ лежит на поверхности. Ну и надежности нет никакой. Пользовался подобным с момента подключения к технологии VPN. Работа с вероятностью даже не 50/50, а меньше. Если и локалка проинициализируется, и звезды сойдутся, то да, сработает. Я написал в самом начале поста, что это я сразу отмел. Если в вашем случае это всегда работает, ну что ж - вам повезло.

Отправлено: 17:09, 11-10-2014 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Проблемы с автоматизацией запуска VPN

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Нужна помощь с автоматизацией ESET NOD32 iceb3rg Скриптовые языки администрирования Windows 2 21-11-2011 07:12
Помогите сделать назначеное задание с нужной автоматизацией !!! stavgreengo AutoIt 0 31-03-2011 13:06
2007 - проблемы запуска программы word утро Microsoft Office (Word, Excel, Outlook и т.д.) 3 15-03-2011 21:58
Проблемы запуска меню в биосе. Andrei-13- Автоматическая установка Windows 2000/XP/2003 5 15-11-2006 12:46
[решено] Проблемы запуска компа с Chaintech 6BPM0 Skynet Непонятные проблемы с Железом 37 27-08-2006 00:36




 
Переход