|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Мониторинг VPN и прописывание маршрута |
|
VBS/WSH/JS - Мониторинг VPN и прописывание маршрута
|
Ветеран Сообщения: 1384 |
Профиль | Отправить PM | Цитировать Здравствуйте.
У меня есть VPN сервер, к которому подключается человек из другого офиса. Для правильной настройки подключения со стороны офиса мне пришлось прибегнуть к возможностям VBS. В этой теме http://forum.oszone.net/thread-176097.html я описал свою проблему и сам же решил её написанием скрипта, который анализирует ответы компа из командной строки. Принцип работы таков: 1. Подключается VPN соединение 2. Смотрится номер виртуального интерфейса 3. Прописывается маршрут в удалённую сеть с учётом номера +всё логируется Решение может и "детское" но работает до сих пор. Есть небольшая проблемка. При обрыве VPN соединения - оно поднимается само (пара галочек в настройках), а вот роуты не поднимаются. Приходится звонить в офис и просить перезапустить скрипт. Скажите как можно модифицировать скрипт чтобы он мониторил соединение и если нужно поднимал его и прописывал роуты? Может стОит переделать и его основную часть (анализ строк)? |
|
------- Отправлено: 18:22, 16-07-2010 |
Пользователь Сообщения: 140
|
Профиль | Отправить PM | Цитировать Tonny_Bennet,
Скрипт очень неплохой и срочная модернизация ему не требуется, а для мониторинга подключения можно использовать такой способ: Set WshShell = CreateObject("WScript.Shell") Do RetCode = WshShell.Run("ping -n 1 <<узел доступный по vpn>>", 0, True) ChEnable = true If RetCode = 1 Then Call AddRouteFunction("str") End if Wscript.Sleep 600000 ' Задержка на проверку соединения Loop While ChEnable Function AddRouteFunction(str) - - основное тело твоего скрипта - End Function WScript.Quit (1) |
Отправлено: 19:32, 16-07-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1384
|
Профиль | Отправить PM | Цитировать Спасибо. Я читал указанную тему. Думаю что в понедельник сяжду и можернизирую скрипт. О результатах отпишусь.
|
------- Отправлено: 23:49, 17-07-2010 | #3 |
Ветеран Сообщения: 1384
|
Профиль | Отправить PM | Цитировать чуть переставил строчки и получилось вот это:
Set WshShell = CreateObject("WScript.Shell") Set FSO=CreateObject("Scripting.FileSystemObject") Dim Log Set Log=FSO.OpenTextFile("C:\vpn_connect_logs.txt",8,true) Log.WriteLine(Now()&" Запуск скрипта") 'WScript.Sleep 40000 'пауза 40 секунд Call AddRouteFunction("str") Do RetCode = WshShell.Run("ping -n 1 192.168.0.111", 0, True) ChEnable = true If RetCode = 1 Then Log.WriteLine(Now()&" Обрыв соединения") Call AddRouteFunction("str") End if Wscript.Sleep 10000 'Задержка на проверку соединения 10 секунд Loop While ChEnable Function AddRouteFunction(str) Dim StringArray(15) 'параметры подключения sNameOfConnection = "VPN" sUser = "Username" sPassword = "Password" sNameOfInt="WAN (PPP/SLIP) Interface" 'имя интерфейса Set WshShell = CreateObject("WScript.Shell") Set WshExec = WshShell.Exec("rasdial "&sNameOfConnection&" "&sUser&" "&sPassword) 'подключаем соединение Log.WriteLine(Now()&" Подключение rasdial "&sNameOfConnection&" "&sUser&" "&sPassword) WScript.Sleep 3000 Set WshExec = WshShell.Exec("route print")' смотрим route print Set TextStream = WshExec.StdOut Str = vbNullString Trim(TextStream.ReadLine()) 'просто читаю первую строку она мне дальше не нужна Trim(TextStream.ReadLine()) 'просто читаю вторую строку она мне дальше не нужна n=0 Log.WriteLine(Now()&" Доступные сетевые интерфейсы:") Do While Not TextStream.AtEndOfStream stemp = Trim(TextStream.ReadLine())' последовательно читаем строки if (stemp <> "===========================================================================") then n=n+1 StringArray(n)=stemp Log.WriteLine(Now()&" "&stemp) else Exit Do End If Loop sNumOfInt="" For i=1 to 15 'просматриваю все строки и ищу нужный мне сетевой адаптер if (InStrRev(StringArray(i),sNameOfInt)<>0) then 'MsgBox sNameOfInt & " в "&i&" строке" sNumOfInt = Left(StringArray(i),InStr(StringArray(i)," "))' получаю номер сетевого интерфейса End if Next Erase StringArray if (sNumOfInt<>"") then Set WshExec = WshShell.Exec("route add 192.168.0.0 mask 255.255.255.0 192.168.2.1 metric 1 if "&sNumOfInt) Log.WriteLine(Now()&" Добавлен маршрут route add 192.168.0.0 mask 255.255.255.0 192.168.2.1 metric 1 if "&sNumOfInt) else MsgBox "Маршрут не добавлен. Возможно не удалось создать подключение",vbInformation + vbOK, "Внимание!" 'Log.WriteLine(Now()&" Маршрут не добавлен route add 192.168.0.0 mask 255.255.255.0 192.168.2.1 metric 1 if "&sNumOfInt) End if Log.WriteLine(Now()&" Работа скрипта завершена") Log.WriteLine() End Function Log.Close WScript.Quit (1) Вот только мне интересно нормально ли то, что этот скрипт кушает порядка 11 МБ оперативной памяти? |
------- Отправлено: 10:07, 19-07-2010 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интернет - "Плохая" трассировка маршрута. Чем, как и на что смотреть? | flev45 | Сетевые технологии | 2 | 06-01-2010 15:13 | |
VBS/WSH/JS - [решено] Создание папки, прописывание ее в переменных средах. | ufunf | Скриптовые языки администрирования Windows | 10 | 18-11-2009 00:55 | |
Загрузка - [решено] Можно ли заблокировать прописывание программы в автозагрузке? | truvo | Microsoft Windows 2000/XP | 5 | 24-03-2009 08:53 | |
Настройка маршрута доступа к сайту w2003r2 | GreenIce | Microsoft Windows NT/2000/2003 | 16 | 21-02-2008 10:52 | |
Отображение на карте мира маршрута доставки файла. | Murder7 | Программное обеспечение Windows | 13 | 02-05-2004 19:33 |
|