Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Скрипт Visual Basic для определения IP в Windows 7 и XP (http://forum.oszone.net/showthread.php?t=160859)

Hitsi 19-12-2009 22:10 1299584

Скрипт Visual Basic для определения IP в Windows 7 и XP
 
Имеется скрипт на vb который запускается из bat фаила командой cscript delroute.vbs
Следующего содержания:
Код:

Option Explicit
Dim objWMIService
Dim objNetAdapter
Dim strComputer
Dim colNetAdapters
Dim addr
Dim cDeleteRoute
Dim WshShell
strComputer = "localhost"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where Description='WAN (PPP/SLIP) Interface' ")
For Each objNetAdapter in colNetAdapters
    For Each addr in objNetAdapter.IPAddress
                cDeleteRoute = "route delete 224.0.0.0 mask 224.0.0.0 " + addr
                Set WshShell = WScript.CreateObject("WScript.Shell")
                WScript.Echo cDeleteRoute
                WshShell.Run (cDeleteRoute)
    Next                                                                                     
Next

По сути он определяет IP адресс интерфейса WAN (PPP/SLIP) Interface (VPN вроде как) и удаляет роут "route delete 224.0.0.0 mask 224.0.0.0 " + IP
В ХР все работает замечательно.... в семерке не пашет (в висте скорее всего тоже)

Кто может подсказать в чем тут ошибка?

ЗЫ: скрипт написан путем поиска разного рода информации в инете и методом научного тыка
Использовалась вот эта документация
Если кто подскажет как его улучшить, сделать проверки на существование айпиадреса и интерфейса буду очень благодарен

Valeant 19-12-2009 22:31 1299600

Hitsi,
Вообще то лучше уже переходить на Powershell и конкретно
http://www.oszone.net/print/7108/
http://www.itcommunity.ru/blogs/posh...gory/1271.aspx

Hitsi 19-12-2009 22:48 1299614

Скрипт делался не конкретно для меня а для общего пользования и у кого-то до сих пор ХР, а там павершелл по умолчанию нет

ЗЫ: Вообще-то я не программист как таковой, я просто могу использовать уже кем-то написанные скрипты почти на любом языке програмирования... вот и тут я нашел несколько скриптов, соединил их в один и исправил под свои нужды. А вообще по большому счету я VB не знаю

Vancouver 19-12-2009 23:03 1299624

Цитата:

Цитата Hitsi
запускается из bat »

Батник запускаем от имени Админа ?

Hitsi 19-12-2009 23:28 1299638

Конечно )

fomin_ 20-12-2009 23:35 1300328

Мне думается что Ваш скрипт нормально отрабатывает и в Win7, однако интерфейс, который в XP называется WAN (PPP/SLIP) Interface, в win7 имеет другое имя. Для определения имен интерфейсов, запустите следующий скрипт на win7 и на XP:
Код:

Option Explicit
Dim objWMIService, objNetAdapter, strComputer, colNetAdapters, addr, cDeleteRoute
Dim WshShell

Set WshShell = WScript.CreateObject("WScript.Shell")
strComputer = "localhost"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For Each objNetAdapter in colNetAdapters
    For Each addr in objNetAdapter.IPAddress
                WScript.Echo  "Description = " & objNetAdapter.Description & vbCrLf & _
                "IP Address = " & addr& vbCrLf
    Next                                                                                     
Next

Только запускайте его не через cscript, а через wscript или просто 2-ды кликните на файле.
Фактически, это слегка переделанный Ваш скрипт.
У Вас должны отобразиться имена интерфейсов, которым присвоен IP-адрес и которые подключены к сети.

Hitsi 29-01-2010 14:26 1333459

Извиняюсь что меня так долго не было...

Скрипт написанный выше отображает только локальный айпи адресс машины и все.
Покопавшись чуть выяснилось что существует нужный route в описании Win32_IP4RouteTable но там вместоайпиадреса интрфейса указывается его индекс.
В моем случае 3 одинаковых роута на 3 разных индекса. Один индекс это локалхост, второй - локальный адрес (сетевой адаптер), третий это нужный нам vpn. Проблема в том что в описании Win32_NetworkAdapter и Win32_NetworkAdapterConfiguration нет данного интерфейса вообще (с данным индексом)

т.е. интерфейс есть но описывается он где-то еще ( А вот где это хотелось бы знать

ЗЫ: wscript просто делает это в окошке... а нажимать на кнопку ок при выводе нового значения утомительно. Проще в консоле посмотреть сразу список

Hitsi 01-02-2010 19:46 1336201

Может кто-нибудь знает другой способ получить ip адрес присвоенный при подключении vpn не получая его с удаленного хоста?

Hitsi 20-02-2010 23:23 1352257

проблема все еще остается....
Нужно узнать IP адресс компа подключенного к впн, без запросов на другие сайты, для Windows 7 (и Vista) и затем удалить один маршрут.

Критерий только один - никакого дополнительного ПО ставить не надо.


Время: 08:44.

Время: 08:44.
© OSzone.net 2001-