|
|
Tonny_Bennet |
16-07-2010 18:22 1454650 |
Мониторинг VPN и прописывание маршрута
Здравствуйте.
У меня есть VPN сервер, к которому подключается человек из другого офиса. Для правильной настройки подключения со стороны офиса мне пришлось прибегнуть к возможностям VBS.
В этой теме http://forum.oszone.net/thread-176097.html я описал свою проблему и сам же решил её написанием скрипта, который анализирует ответы компа из командной строки.
Принцип работы таков:
1. Подключается VPN соединение
2. Смотрится номер виртуального интерфейса
3. Прописывается маршрут в удалённую сеть с учётом номера
+всё логируется
Решение может и "детское" но работает до сих пор. Есть небольшая проблемка. При обрыве VPN соединения - оно поднимается само (пара галочек в настройках), а вот роуты не поднимаются. Приходится звонить в офис и просить перезапустить скрипт. Скажите как можно модифицировать скрипт чтобы он мониторил соединение и если нужно поднимал его и прописывал роуты? Может стОит переделать и его основную часть (анализ строк)?
|
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)
Нечто подобное, но с ручным запуском есть здесь vbscript: Bat файл мониторинга подключения
|
Tonny_Bennet |
17-07-2010 23:49 1455270 |
Спасибо. Я читал указанную тему. Думаю что в понедельник сяжду и можернизирую скрипт. О результатах отпишусь.
|
Tonny_Bennet |
19-07-2010 10:07 1455912 |
чуть переставил строчки и получилось вот это:
Код:
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 МБ оперативной памяти?
|
Время: 11:56.
© OSzone.net 2001-