Любой язык - Скрипт Visual Basic для определения IP в Windows 7 и XP

Ответить
Аватара пользователя
Hitsi

Любой язык - Скрипт Visual Basic для определения IP в Windows 7 и XP

Сообщение Hitsi »

Имеется скрипт на 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

В ХР все работает замечательно.... в семерке не пашет (в висте скорее всего тоже)



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



ЗЫ: скрипт написан путем поиска разного рода информации в инете и методом научного тыка

Использовалась вот эта
документация


Если кто подскажет как его улучшить, сделать проверки на существование айпиадреса и интерфейса буду очень благодарен
Аватара пользователя
Hitsi

Re: Любой язык - Скрипт Visual Basic для определения IP в Windows 7 и XP

Сообщение Hitsi »

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



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

Re: Любой язык - Скрипт Visual Basic для определения IP в Windows 7 и XP

Сообщение Hitsi »

Мне думается что Ваш скрипт нормально отрабатывает и в 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

Re: Любой язык - Скрипт Visual Basic для определения IP в Windows 7 и XP

Сообщение Hitsi »

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



Скрипт написанный выше отображает только локальный айпи адресс машины и все.

Покопавшись чуть выяснилось что существует нужный route в описании Win32_IP4RouteTable но там вместоайпиадреса интрфейса указывается его индекс.

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



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



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

Re: Любой язык - Скрипт Visual Basic для определения IP в Windows 7 и XP

Сообщение Hitsi »

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

Re: Любой язык - Скрипт Visual Basic для определения IP в Windows 7 и XP

Сообщение Hitsi »

проблема все еще остается....

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



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

Вернуться в «Скриптовые языки администрирования Windows»