Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаленная смена IP

Ответить
Настройки темы
CMD/BAT - [решено] Удаленная смена IP

Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте. Есть сеть на 80 компов winXP. Компы в домене под win2003. Подняты DHCP и DNS . На компах IP адрес, маска, шлюз, днс выставлены вручную. Подскажите пожалуйста как удаленно(скриптом), через политики, сделать так что бы IP адреса, маска, шлюз, днс выдавались автоматом.

Отправлено: 09:39, 18-08-2009

 

Аватара для batyaPS

Ветеран


Сообщения: 968
Благодарности: 61

Профиль | Отправить PM | Цитировать


Цитата verna:
можно, причем для 2003 это единственный вариант
об этом выше писал »

помогите кто нибудь эти скрипты чуть изменить для логон скрипта .
по типу


если IP тачка получает по DHCP то меняем на статический
если имя компа тото то меняем IP на такой то и прописываем маску , днс , шлюз.

такой то IP
такой ТО iP
такоц то Ip

Отправлено: 15:45, 25-08-2009 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 72
Благодарности: 27

Профиль | Сайт | Отправить PM | Цитировать


batyaPS, так надо не просто скрипт скопровать, а заполнить параметры
' Исходные данные
strComputer = "old_ip_address" - текущий IP адрес
sSubnetMask = "old_subnet_mask" - текущая маска сети
sNewIPAddress = "new_ip_address" - новый IP адрес
sWinsSecondaryServer = "second_wins_server" - можно не запонять

Скрипт запускается с компьютера администратора и менят настойки сетевого интерфейса указанного компьютера.

Цитата batyaPS:
еррор коде : 0 »
означает что ошибок нет!

Вот пример заполнения исходных данных
' Исходные данные
strComputer = "172.31.26.123"
sSubnetMask = "255.255.240.0"
sNewIPAddress = "172.31.26.123"
sWinsSecondaryServer = ""

В данном случае перевожу комп с динамики на статику, поэтому новый и старый адреса одинаковые

-------
Статьи для системных инженеров http://www.sysengineering.ru


Отправлено: 14:22, 29-12-2009 | #12


Аватара для batyaPS

Ветеран


Сообщения: 968
Благодарности: 61

Профиль | Отправить PM | Цитировать


Цитата vitaliyboch:
Вот пример заполнения исходных данных
' Исходные данные
strComputer = "172.31.26.123"
sSubnetMask = "255.255.240.0"
sNewIPAddress = "172.31.26.123"
sWinsSecondaryServer = "" »
скрипт отрабатывает . ошибок нет , но в свойствах TCP/IP не чего не меняется .

еще , зависит ли работа скрипта от кол-ва сетевых карт ? и как он определяет на каком интерфейсе менять настройки . ?

Отправлено: 21:39, 01-01-2010 | #13


Пользователь


Сообщения: 140
Благодарности: 14

Профиль | Отправить PM | Цитировать


batyaPS,
еще , зависит ли работа скрипта от кол-ва сетевых карт ? и как он определяет на каком интерфейсе менять настройки . ?
Не зависит. Скрипт ищет интерфейс с именем 'Local Area Connection' . Все остальное игнорируется.
Чтобы скрипт определил все подключенные проводные ethernet соединения, нужно заменить в скрипте
set colItems = objWMIService.ExecQuery ("Select * From Win32_NetworkAdapter " & "Where NetConnectionID = " & "'Local Area Connection'")
на
set colItems = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapter Where NetConnectionID Like 'Local%'")
Но это тоже не поможет, тк логика работы скрипта подразумевает, что выбирается макадрес только из последнего экземпляра коллекции colItems:
for each objItem in colItems
strMACAddress = objItem.MACAddress
next

Короче, автору надо подправить скрипт
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:26, 02-01-2010 | #14


Пользователь


Сообщения: 72
Благодарности: 27

Профиль | Сайт | Отправить PM | Цитировать


Цитата batyaPS:
еще , зависит ли работа скрипта от кол-ва сетевых карт ? и как он определяет на каком интерфейсе менять настройки . ? »
Не зависит от количества сетевых карт - скрипт поменяет настроки у той карты, у которой совпадет IP с указнааым в исходных данных.
Цитата batyaPS:
скрипт отрабатывает . ошибок нет , но в свойствах TCP/IP не чего не меняется .
скрипт обязательно должен что-то выдать - либо ошибку с ее кодом, либо ноль - "0". Если этого не произошло, то либо неверные исходные данные, либо Вам не хватает прав для смены настроек.

-------
Статьи для системных инженеров http://www.sysengineering.ru


Отправлено: 00:33, 08-01-2010 | #15


Аватара для batyaPS

Ветеран


Сообщения: 968
Благодарности: 61

Профиль | Отправить PM | Цитировать


Цитата vitaliyboch:
либо ноль - "0" »
0 выдает после выполнения , но на самой тачке не чего не меняется .
Может нужна перезагрузка ?

Отправлено: 14:16, 08-01-2010 | #16


Пользователь


Сообщения: 140
Благодарности: 14

Профиль | Отправить PM | Цитировать


По поводу почему после отработки скрипта ничего не меняется.
Скорее всего Вы используете русскую WinXP.
А в ней проводной интерфейс по умолчанию называется "Подключение по локальной сети"
Теперь обратимся к wmi запросу из скрипта:
set colItems = objWMIService.ExecQuery ("Select * From Win32_NetworkAdapter " & "Where NetConnectionID = " & "'Local Area Connection'")
Очевидно, что интерфейса с именем Local Area Connection в русской XP нет, поэтому скрипт не находит интерфейса и завершается, так ничего не изменив.
Чтобы wmi-запрос мог работать и с англ. и с русской XP, поменяйте приведенную строку скрипта на
set colItems = objWMIService.ExecQuery ("Select * From Win32_NetworkAdapter Where NetConnectionID like '%локальной%' or NetConnectionID like 'Local%'")

ЗЫ:
Предполагаю, что исправив эту ошибку, через несколько строк Вы упретесь в следующую.
(Такой уж скрипт!)

Последний раз редактировалось fomin_, 08-01-2010 в 21:58.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:41, 08-01-2010 | #17


Пользователь


Сообщения: 72
Благодарности: 27

Профиль | Сайт | Отправить PM | Цитировать


Вот модификация скрипта, но мне кажется, что будут проблемы при удаленной смене конфигурации адаптера, если задать разные значения IP адреса текущего и нового.
Код: Выделить весь код
' Целевой компьютер
mComputer = "."
' Новые сетевые параметры задаются конкретными значениями
' Аналогичные параметры задаются значением "The same"
' Пустые парамеры задаются значением ""
mNewIPAddress = "The same"
mNewSubnetMask = "The same"
mNewDNSServer = "The same"
mNewDefaultIPGateway = "The same"
mNewWINSPrimaryServer = "The same"
mNewWINSSecondaryServer = "The same"
' Рабочие массивы
Dim mDNSServerList()
Dim mDefaultIPGatewayList()
Dim mGatewayMetricList()
Dim mNewDNSServerList()
Dim mNewDefaultIPGatewayList()
Dim mNewGatewayMetricList()
' Подключение к пространству имен целевого компьютера
Set mSWbemServices = GetObject("winmgmts:\\" & mComputer & "\Root\CIMv2")
' Получение коллекции адаптеров с указанным IP-адресом
Set mAdapterList = mSWbemServices.ExecQuery ("Select * From Win32_NetworkAdapter")
' Получение MAC-адреса адаптера локального адаптера
For Each mCurrentAdapter In mAdapterList
    If InStr(LCase(mCurrentAdapter.NetConnectionID), "локальн") > 0 _
      Or InStr(LCase(mCurrentAdapter.NetConnectionID), "local") > 0 Then
        mMACAddress = mCurrentAdapter.MACAddress
        mCaption = mCurrentAdapter.Caption
        Exit For
    End If
Next
' Получение коллекции параметров адаптера с указанным MAC-адресом
Set mAdapterConfigList = mSWbemServices.ExecQuery _
  ("Select * From Win32_NetworkAdapterConfiguration WHERE MACAddress = '" _
  & mMACAddress & "'")
' Получение текущих параметров сетевого адаптера с указанным MAC-адресом
For Each mCurrentAdapterConfig In mAdapterConfigList
	' IP-адрес
	If IsNull(mCurrentAdapterConfig.IPAddress) = False Then
        For Each mCurrentIPAddress In mCurrentAdapterConfig.IPAddress
            mIPAddress = mCurrentIPAddress
            Exit For
        Next
    End If
	If mNewIPAddress = "The same" Then mNewIPAddress = mIPAddress
    mNewIPAddressList = Array(mNewIPAddress)
	' Маска подсети
	If IsNull(mCurrentAdapterConfig.IPSubnet) = False Then
        For Each mCurrentIPSubnet In mCurrentAdapterConfig.IPSubnet
            mSubnetMask = mCurrentIPSubnet
            Exit For
        Next
    End If
    If mNewSubnetMask = "The same" Then mNewSubnetMask = mSubnetMask
    mNewSubnetMaskList = Array(mNewSubnetMask)
	' DNS сервера
	If IsNull(mCurrentAdapterConfig.DNSServerSearchOrder) = False Then
        iCounter = 0
        For Each mCurrentDNSServer In mCurrentAdapterConfig.DNSServerSearchOrder
            Redim Preserve mDNSServerList(iCounter)
            mDNSServerList(iCounter) = mCurrentDNSServer
            iCounter = iCounter + 1
        Next
	End If
	If mNewDNSServer = "The same" Then
        For iCounter = 0 To UBound(mDNSServerList)
            Redim Preserve mNewDNSServerList(iCounter)
            mNewDNSServerList(iCounter) = mDNSServerList(iCounter)
        Next
	Else
        For iCounter = 0 To UBound(Split(mNewDNSServer,";"))
            Redim Preserve mNewDNSServerList(iCounter)
            mNewDNSServerList(iCounter) = Split(mNewDNSServer,";")(iCounter)
        Next
	End If
	' Шлюзы
	If IsNull(mCurrentAdapterConfig.DefaultIPGateway) = False Then
        iCounter = 0
        For Each mCurrentDefaultIPGateway In mCurrentAdapterConfig.DefaultIPGateway
            Redim Preserve mDefaultIPGatewayList(iCounter)
            mDefaultIPGatewayList(iCounter) = mCurrentDefaultIPGateway
            Redim Preserve mGatewayMetricList(iCounter)
            mGatewayMetricList(iCounter) = iCounter + 1
            iCounter = iCounter + 1
        Next
	End If
	If mNewDefaultIPGateway = "The same" Then
        For iCounter = 0 To UBound(mDefaultIPGatewayList)
            Redim Preserve mNewDefaultIPGatewayList(iCounter)
            mNewDefaultIPGatewayList(iCounter) = mDefaultIPGatewayList(iCounter)
            Redim Preserve mNewGatewayMetricList(iCounter)
            mNewGatewayMetricList(iCounter) = iCounter + 1
        Next
	Else
        For iCounter = 0 To UBound(Split(mNewDefaultIPGateway,";"))
            Redim Preserve mNewDefaultIPGatewayList(iCounter)
            mNewDefaultIPGatewayList(iCounter) = Split(mNewDefaultIPGateway,";")(iCounter)
            Redim Preserve mNewGatewayMetricList(iCounter)
            mNewGatewayMetricList(iCounter) = iCounter + 1
        Next
	End If
	' WINS сервера
	If IsNull(mCurrentAdapterConfig.WINSPrimaryServer) = False Then
        mWINSPrimaryServer = mCurrentAdapterConfig.WINSPrimaryServer
    End If
	If mNewWINSPrimaryServer = "The same" Then
        If IsNull(mCurrentAdapterConfig.WINSPrimaryServer) = True Then
            mNewWINSPrimaryServer = ""
        Else
            mNewWINSPrimaryServer = mWINSPrimaryServer
        End If
    End If
	If IsNull(mCurrentAdapterConfig.WINSSecondaryServer) = False Then
        mWinsSecondaryServer = mCurrentAdapterConfig.WINSSecondaryServer
	End If
	If mNewWinsSecondaryServer = "The same" Then
        If IsNull(mCurrentAdapterConfig.WINSSecondaryServer) = True Then
            mNewWinsSecondaryServer = ""
        Else
            mNewWinsSecondaryServer = mWINSSecondaryServer
        End If
    End If
	Exit For
Next
' Формирование сообщения по текущей и по будущей конфигурациям сетевого адаптера
mInfoMessage = "Network adapter: " & mCaption & vbCrLf _
  & "MAC address: " & mMACAddress & vbCrLf _
  & "Current configuration:" & vbCrLf _
  & vbTab & "IP address: " & mIPAddress & vbCrLf _
  & vbTab & "Subnet mask: " & mSubnetMask & vbCrLf _
  & vbTab & "Default Gateway: " & Join(mDefaultIPGatewayList,";") & vbCrLf _
  & vbTab & "DNS servers: " & Join(mDNSServerList,";") & vbCrLf _
  & vbTab & "WINS Primary Server: " & mWINSPrimaryServer & vbCrLf _
  & vbTab & "WINS Secondary Server: " & mWINSSecondaryServer & vbCrLf _
  & "New configuration:" & vbCrLf _
  & vbTab & "IP address: " & mNewIPAddress & vbCrLf _
  & vbTab & "Subnet mask: " & mNewSubnetMask & vbCrLf _
  & vbTab & "Default Gateway: " & Join(mNewDefaultIPGatewayList,";") & vbCrLf _
  & vbTab & "DNS servers: " & Join(mNewDNSServerList,";") & vbCrLf _
  & vbTab & "WINS Primary Server: " & mNewWINSPrimaryServer & vbCrLf _
  & vbTab & "WINS Secondary Server: " & mNewWINSSecondaryServer & vbCrLf _
  & vbCrLf & "Please confirm the changes" & mNewWINSSecondaryServer & vbCrLf
' Окно подтверждения изменения настроек сетевого параметра
mChangeFlag = MsgBox(mInfoMessage, vbOKCancel, "Network card settings change")
If mChangeFlag = vbOK Then
    ' Установка нового IP адреса
    For Each mCurrentAdapterConfig in mAdapterConfigList
        errEnable = mCurrentAdapterConfig.EnableStatic _
          (mNewIPAddressList, mNewSubnetMaskList)
        errGateways = mCurrentAdapterConfig.SetGateways _
          (mNewDefaultIPGatewayList, mNewGatewayMetricList)
        errWINS = mCurrentAdapterConfig.SetWINSServer _
          (mNewWINSPrimaryServer, mNewWinsSecondaryServer)
        errDNS = mCurrentAdapterConfig.SetDNSServerSearchOrder _
          (mNewDNSServerList)
        Exit For
    Next
    ' Pезультат операции
    mInfoMessage = "Operation result:" & vbCrLf _
      & "IP address error code: " & errEnable & vbCrLf _
      & "Gateway error code: " & errGateways & vbCrLf _
      & "DNS error code: " & errDNS & vbCrLf _
      & "WINS error code: " & errWINS & vbCrLf
Else
    mInfoMessage = "The operation is canceled"
End If
Wscript.Echo(mInfoMessage)

-------
Статьи для системных инженеров http://www.sysengineering.ru

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:38, 23-06-2010 | #18


Пользователь


Сообщения: 72
Благодарности: 27

Профиль | Сайт | Отправить PM | Цитировать


Как я и предполагал, существует проблема при смене IP адреса на компьютере из другого филиала. Текущий скрипт сначала меняет IP, а потом прописывает остальные параметры, но компьютер становится уже недоступен - нет верных настроек шлюза. Если изменить порядок внесения параметров и менять IP только после смены DNS серверов и шлюза, то шлюз оказывается пустым для статических параметров! Он почему-то прописывается в динамические характеристики.
Кто знает как обойти эту проблему?
В этой части кода изменен порядок внесения параметров
Код: Выделить весь код
------
        errGateways = mCurrentAdapterConfig.SetGateways _
          (mNewDefaultIPGatewayList, mNewGatewayMetricList)
        errWINS = mCurrentAdapterConfig.SetWINSServer _
          (mNewWINSPrimaryServer, mNewWinsSecondaryServer)
        errDNS = mCurrentAdapterConfig.SetDNSServerSearchOrder _
          (mNewDNSServerList)
        errEnable = mCurrentAdapterConfig.EnableStatic _
          (mNewIPAddressList, mNewSubnetMaskList)
-------

-------
Статьи для системных инженеров http://www.sysengineering.ru


Отправлено: 10:41, 25-06-2010 | #19



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаленная смена IP

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Применяется удаленная политика Iad Microsoft Windows NT/2000/2003 3 14-07-2009 14:26
Разное - [решено] Удаленная Vista отображается в списке загрузки систем Shmaser Microsoft Windows Vista 2 08-07-2009 18:58
Решено | Удаленная установка Windows - BSOD diamondsasha Автоматическая установка Windows 2000/XP/2003 3 11-04-2006 07:47
Удаленная авторизация Malcomoffice Microsoft Windows 2000/XP 0 26-01-2006 00:36
Удаленная дефрагментация Dru Microsoft Windows NT/2000/2003 9 24-12-2002 09:03




 
Переход