PDA

Показать полную графическую версию : [решено] запуск определенной комманды в зависимости от IP адреса


Jeander
26-03-2012, 15:16
Нашел скрипт выводящий IP адрес ПК

strcomputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

strCount = 1

For Each objitem in colitems
If strCount = 1 Then
wscript.echo objitem.IPAddress(0)
'strIPAddress = Join(objitem.IPAddress, ",")
IP = stripaddress
strCount = strCount + 1
'wscript.echo IP
Else
End If

next

Имеются IP адреса вида: 10.69.*.*, 10.70.*.*, 10.71.*.*

Требуется чтобы в зависимости от определенного айпи адреса выполнялись комманды: net user username pass1 для 10.69.*.*, net user username pass2 для 10.70.*.*, net user username pass3 для 10.71.*.*

DmitriiV
26-03-2012, 16:52
Пример:

strcomputer = "."
arrPass = Array("pass1", "pass2", "pass3")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For Each objItem In colItems
Select Case Mid(objItem.IPAddress(0), 4, 2)
Case "69": i = 0
Case "70": i = 1
Case "71": i = 2
Case Else: i = -1
End Select
Next
If i >= 0 Then
Set objWShell = CreateObject("WScript.Shell")
Set objExec = objWShell.Exec("net user username " & arrPass(i))
'...
End If

Jeander
26-03-2012, 18:01
Уточню, IP адрес может быть 10.69.70.71(10.70.69.71, 10.71.69.70, 10.71.70.69), то что вы предложили сработает в этом случае?

DmitriiV
27-03-2012, 07:02
Сработает, т.к. приведённые Вами конкретные адреса соответствуют указанным ранее шаблонам.

Jeander
27-03-2012, 08:44
Проверяю у себя на машине вот так:
strcomputer = "."

arrPassUser1 = Array("password1", "password2", "password3")

arrPassUser2 = Array("pass1", "pass2", "pass3")

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

For Each objItem In colItems

Select Case Mid(objItem.IPAddress(0), 4, 2)
Case "7": i = 0
Case Else: i = -1
End Select

Next

If i >= 0 Then
Set objWShell = CreateObject("WScript.Shell")
Set objExec = objWShell.Exec("net user user1 " & arrPassUser1(i))

Set objWShell = CreateObject("WScript.Shell")
Set objExec = objWShell.Exec("net user user2 " & arrPassUser2(i))

msgbox "Пароли изменены на актуальные"
Else
msgbox "Ошибка!"

End If

Имею IP адрес 10.7.5.164
Скрипт выдает "Ошибка!", где я чего не усмотрел?

DmitriiV
27-03-2012, 10:23
1. По-вашему, нижний вариант соответствует верхним?
Имеются IP адреса вида: 10.69.*.*, 10.70.*.*, 10.71.*.* »
IP адрес может быть 10.69.70.71(10.70.69.71, 10.71.69.70, 10.71.70.69) »
Имею IP адрес 10.7.5.164 »

2. Почитайте справку по функции Mid().

Jeander
27-03-2012, 11:37
Прочитал справку, понял в чем ошибка, спасибо.

Работает идеально!

Спасибо огромное!

jumpman
11-09-2015, 18:28
Ребята, подскажите пожалуйста

если диапазоны вот такие и диапазонов 12 штук:


взависимости от айпишника запустить один из 12 файлов.

как лучше решить этот вопрос?

Iska
12-09-2015, 12:48
как лучше решить этот вопрос? »
Для начала перечислить все:
и тд »
поимённо.

jumpman
14-09-2015, 10:36
диапозоны вот
на каждый диапазон свой скрипт должен срабатывать.



думал например ip перевести в int и как то сравнивать с диапазонами,но пока не догнал как.
конечно как тупой вариант все возможные комбинации последних символов перечислить через mid и case как в примере, но это дур дом.
может у вас есть идеи лучше?

Iska
14-09-2015, 16:40
jumpman, возникает закономерный вопрос — поскольку это никак не диапазоны в явном виде — будут ли, например, относиться:
к первому «диапазону» — адрес «10.207.1.0»;
ко второму «диапазону» — адрес «10.207.206.255»?

и т.п.?

jumpman
14-09-2015, 16:54
Iska, да будут.

не знаю как эти диапазоны по другому показать еще.
все адреса между 10.207.0.1 и 10.207.71.255 это первый диапазон, и тд...

у нас был asp под это заточен, сейчас решили переделывать...вот и вникаю в VBS...

jumpman
16-09-2015, 16:28
Iska, Спасибо, вроде допер сам, скрипт пустил в тест уже.
если комуто будет нужно решение подобной задачи, обращайтесь)




© OSzone.net 2001-2012