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

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

Jeander 26-03-2012 15:16 1887081

запуск определенной комманды в зависимости от IP адреса
 
Нашел скрипт выводящий 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 1887160

Пример:
Код:

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 1887206

Уточню, IP адрес может быть 10.69.70.71(10.70.69.71, 10.71.69.70, 10.71.70.69), то что вы предложили сработает в этом случае?

DmitriiV 27-03-2012 07:02 1887475

Сработает, т.к. приведённые Вами конкретные адреса соответствуют указанным ранее шаблонам.

Jeander 27-03-2012 08:44 1887504

Проверяю у себя на машине вот так:
Код:

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 1887593

1. По-вашему, нижний вариант соответствует верхним?
Цитата:

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

Цитата:

Цитата Jeander
IP адрес может быть 10.69.70.71(10.70.69.71, 10.71.69.70, 10.71.70.69) »

Цитата:

Цитата Jeander
Имею IP адрес 10.7.5.164 »

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

Jeander 27-03-2012 11:37 1887653

Прочитал справку, понял в чем ошибка, спасибо.

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

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

jumpman 11-09-2015 18:28 2552182

Ребята, подскажите пожалуйста

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


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

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

Iska 12-09-2015 12:48 2552384

Цитата:

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

Для начала перечислить все:
Цитата:

Цитата jumpman
и тд »

поимённо.

jumpman 14-09-2015 10:36 2552921

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



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

Iska 14-09-2015 16:40 2553065

jumpman, возникает закономерный вопрос — поскольку это никак не диапазоны в явном виде — будут ли, например, относиться:
  • к первому «диапазону» — адрес «10.207.1.0»;
  • ко второму «диапазону» — адрес «10.207.206.255»?
и т.п.?

jumpman 14-09-2015 16:54 2553077

Iska, да будут.

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

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

jumpman 16-09-2015 16:28 2553925

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


Время: 18:43.

Время: 18:43.
© OSzone.net 2001-