|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Перебор свободных IP по списку и выбор свободного |
|
CMD/BAT - [решено] Перебор свободных IP по списку и выбор свободного
|
![]() Ветеран Сообщения: 867 |
Цель такая - имеется несколько свободных IP-адресов, которые используются не постоянно, а только на момент подготовки компьютеров к работе - установка ОС, софта, назначение уже постоянного другого IP адреса и выдача сотруднику. Сваял батник, который при первом входе в систему назначает компьютеру временный и заведомо никем не используемый IP-адрес, затем пингует остальные по списку и назначает уже другой - свободный (DHCP отключен). После чего установка софта запускается уже по сетке. Батник получился довольно громоздким, все думаю как бы его уменьшить (просто из спортивного интереса), или может быть можно сделать вообще как-то по-другому? И хочу чтобы был только один файл.
reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v SearchList /t REG_SZ /d zavod.loc /f reg add HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters /v SearchList /t REG_SZ /d zavod.loc /f echo pushd interface ip > c:\ipconfig echo set address name="Подключение по локальной сети" source=static addr=192.168.9.192 mask=255.255.252.0 >> c:\ipconfig echo set address name="Подключение по локальной сети" gateway=192.168.10.199 gwmetric=0 >> c:\ipconfig echo set dns name="Подключение по локальной сети" source=static addr=192.168.10.5 register=PRIMARY >> c:\ipconfig echo add dns name="Подключение по локальной сети" addr=192.168.10.171 index=2 >> c:\ipconfig echo set wins name="Подключение по локальной сети" source=static addr=none >> c:\ipconfig echo popd >> c:\ipconfig netsh exec c:\ipconfig del /q c:\ipconfig for %%I in (245,246,247,248) do ping 192.168.9.%%I -n 3 | find /I "TTL" || (set freeIP=%%I & goto :setip) echo "Нет свободных адресов" & pause & exit :setip echo pushd interface ip > c:\ipconfig echo set address name="Подключение по локальной сети" source=static addr=192.168.9.%freeIP% mask=255.255.252.0 >> c:\ipconfig echo set address name="Подключение по локальной сети" gateway=192.168.10.199 gwmetric=0 >> c:\ipconfig echo set dns name="Подключение по локальной сети" source=static addr=192.168.10.5 register=PRIMARY >> c:\ipconfig echo add dns name="Подключение по локальной сети" addr=192.168.10.171 index=2 >> c:\ipconfig echo set wins name="Подключение по локальной сети" source=static addr=none >> c:\ipconfig echo popd >> c:\ipconfig netsh exec c:\ipconfig del /q c:\ipconfig |
|
Отправлено: 14:19, 10-02-2012 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Именно для этого и придумывали DHCP - почему же его не использовать в своей лабораторной сети?
|
Отправлено: 11:39, 11-02-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Ветеран Сообщения: 867
|
Профиль | Отправить PM | Цитировать Нет возможности включить DHCP - сеть общая, заводская.
|
Отправлено: 12:47, 11-02-2012 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Debugger:
Т.е., что-то наподобие: set sName=name="Подключение по локальной сети" … echo set address %sName% source=static addr=192.168.9.192 mask=255.255.252.0 >> c:\ipconfig echo set address %sName% gateway=192.168.10.199 gwmetric=0 >> c:\ipconfig echo set dns %sName% source=static addr=192.168.10.5 register=PRIMARY >> c:\ipconfig 2. Чтобы не писать в каждой команде перенаправление вывода — можно оформить их операторными скобками, за/перед которыми уже и использовать перенаправление. Наподобие: set sFileOut=c:\ipconfig.txt set sName=name="Подключение по локальной сети" … … >"%sFileOut%" ( echo pushd interface ip echo set address %sName% source=static addr=192.168.9.192 mask=255.255.252.0 echo set address %sName% gateway=192.168.10.199 gwmetric=0 echo set dns %sName% source=static addr=192.168.10.5 register=PRIMARY echo add dns %sName% addr=192.168.10.171 index=2 echo set wins %sName% source=static addr=none echo popd ) netsh exec "%sFileOut%" del /q "%sFileOut%" … … |
|
Отправлено: 13:32, 11-02-2012 | #4 |
![]() Ветеран Сообщения: 867
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
>"%sFileOut%" ( echo pushd interface ip echo set address %sName% source=static addr=192.168.9.192 mask=255.255.252.0 echo set address %sName% gateway=192.168.10.199 gwmetric=0 echo set dns %sName% source=static addr=192.168.10.5 register=PRIMARY echo add dns %sName% addr=192.168.10.171 index=2 echo set wins %sName% source=static addr=none echo popd) |
|||
Отправлено: 17:42, 11-02-2012 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] BATник на перебор ресурсов | Lem_ON | Скриптовые языки администрирования Windows | 3 | 22-06-2011 09:12 | |
V. 2010 - Список свободных комнат. | DJ Mogarych | Microsoft Exchange Server | 0 | 16-02-2011 13:35 | |
Перебор контролов | w3d1 | AutoIt | 8 | 04-09-2009 12:35 | |
Перебор в твиках! | lmn | Автоматическая установка Windows 2000/XP/2003 | 2 | 30-07-2005 02:47 | |
Как на Perl'е написать перебор символов?? | JS | Программирование и базы данных | 2 | 16-10-2003 09:03 |
|