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

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

Ответить
Настройки темы
CMD/BAT - Скрипт смены ip адреса если он получен по DHCP

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


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

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


Доброго дня всем. Есть один скриптик, он получает данные из реестра, и если ip адрес компьютера получен по DHCP, то прописывает его статически (необходимо все компьютеры в сети перевести на статику) Но скрипт как-то криво работает. А именно не получается сделать условие, получен ли ip по dhcp или присвоен статически.
Код: Выделить весь код
@echo off                       
setlocal enabledelayedexpansion
set IFACE="LAN"
set mask=255.255.252.0
set gateway=192.168.36.1
set dns1=192.168.36.2
set dns2=192.168.36.7
set GWMETRIC=1
    set "i=0"
    for /f "delims=" %%i in ('ipconfig /all') do (
      set "arr.!i!=%%i"
      set /a "i+=1"
    )
    set "key=HKLM\SYSTEM\CurrentControlSet\services"
    set "key=%key%\Tcpip\Parameters\Interfaces"
    for /f %%i in ('reg query %key%') do (
      for /f "tokens=3" %%j in (
        '2^>nul reg query "%%i" /v DhcpIpAddress'
      ) do (
        if /i "%%j" neq "0.0.0.0" (
          set "ip=%%j"
          for /f "tokens=2 delims==. " %%k in (
            'set arr ^| findstr /rc:"%%j"'
          ) do set /a "n=%%k-2"
          for /f "tokens=2 delims=:" %%k in (
            'set arr.!n!'
          ) do set "dhcp=%%k"
        )
      )
    )
   chcp 1251>nul
    if /i "%dhcp: =%" equ "нет" (
      set "res=NO"
    ) else (set "res=YES")
    chcp 866>nul
    
    if /i "%res%" equ "yes" (
rem прописываем ip адрес      
echo:%ip% %mask% %gateway%
netsh interface ip set address name=%IFACE% source=static addr=%IP% mask=%MASK% gateway=%GATEWAY% gwmetric=%GWMETRIC%
netsh interface ip set dnsservers name=%IFACE% source=static address=%DNS1% register=PRIMARY validate=no
netsh interface ip add dnsservers name=%IFACE% address=%DNS2% validate=no
ping ya.ru 
ECHO: %COMPUTERNAME% %username% %ip% >> \\192.168.36.12\All\ОИТ\logs\%COMPUTERNAME%.txt
      goto:eof
    )
   
  endlocal
exit /b
укажите пожалуйста на ошибку. заранее спасибо

Отправлено: 09:20, 06-10-2016

 

Ветеран


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

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


Делайте на WSH/PoSH, это куда нагляднее и надёжнее.

Отправлено: 12:58, 06-10-2016 | #2



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

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


Забанен


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

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


Цитата Iska:
Делайте на WSH/PoSH, это куда нагляднее и надёжнее.
С таким же успехом можно и Python предложить. Здесь дело в другом: бездумный копипаст с одного форума в качестве "факта" о проделанной работе на этом форуме. Умиляет такой подход.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:42, 06-10-2016 | #3


Ветеран


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

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


Цитата greg zakharov:
С таким же успехом можно и Python предложить. »
Предлагаю . Токмо он не идёт в комплекте, как озвученные выше.

Отправлено: 23:51, 06-10-2016 | #4


Забанен


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

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


Цитата Iska:
Токмо он не идёт в комплекте, как озвученные выше.
Так что с того? Собрать его из исходников, чай весь процесс можно автоматизировать. К слову, на Tcl решение обозначенного выше вопроса укладывается ровно в семь строк кода, в Perl - три. Кто меньше?

Отправлено: 09:08, 07-10-2016 | #5


Ветеран


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

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


Ну, кому и семь вёрст — не крюк.

Отправлено: 10:13, 08-10-2016 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - Непонятные глюки с ADSL+интернет-шлюз на FreeBSD 6.1+не раздаются ip-адреса по DHCP zholyd Сетевые технологии 2 30-04-2013 16:30
CMD/BAT - сделать так, что бы если ipconfig /all видел все ip адреса, то скрипт продолжал дальш BERGAMOD Скриптовые языки администрирования Windows 4 02-11-2012 18:56
Система - Программа для быстрой смены IP адреса stalsoft Программное обеспечение Windows 7 14-10-2010 01:28
Проблема с получением IP-адреса от DHCP-сервера по Wi-fi Alex189 Microsoft Windows NT/2000/2003 3 18-03-2010 14:42
программа для смены IP - адреса antonhot Сетевые технологии 2 10-02-2007 00:14




 
Переход