Скрипт для смены dns
Конфигурация компьютера | |
Процессор: Intel i5-6600 | |
Материнская плата: Gigabyte GA-Z270X-UD5 | |
Память: HX424C12SB2K2/16 - 16 Gb | |
HDD: Samsung 860 EVO MZ-76E500BW - 1 шт., Samsung 860 QVO MZ-76Q2T0BW - 1 шт, Seagate ST1000DM003 - 1 шт, WD WD40EFRX - 1 шт. | |
Видеокарта: Nvidia GeForce GTX 1070 | |
Звук: Creative X-Fi Titanium Fatal1ty Professional (PCI Express) | |
Блок питания: Seasonic SS-660XP (Platinum-660) | |
CD/DVD: PIONEER DVR-218L | |
Монитор: ASUS PA248QJ, 24,1" | |
Ноутбук/нетбук: Lenovo ThinkPad X270 | |
ОС: Windows 7 Pro 64-bit | |
Индекс производительности Windows: 7,6 | |
Прочее: Корпус: Cooler Master 690 II Advanced (RC-692A-KKN5). Колонки: Microlab H-500D. Мышь: Corsair M65 PRO RGB. ZyXEL Keenetic Ultra II. |
Нужен vbs скрипт для смены/замены DNS только на активном сетевом интерфейсе. Подразумевается, что название активного сетевого интерфейса неизвестно. Работать скрипт должен в Win XP/7.
Данное задание напоминает топик Смена адресов DNS на всех компах в домене, но предложенный там вариант не совсем подходит, а именно нужно смена dns только на текущем (активном) интерфейсе, не затрагивая остальные интерфейсы (GPO не предлагать, т.к. скрипт планируется запускать не только в доменной структуре).
P.S. В интернете есть множество примеров скриптов но полностью отвечающего такому запросу не нашёл:
-------
Слабый всю жизнь идёт лёгкой дорогой, черта сильного выбрать трудный путь.
Будь осторожен в своих желаниях, ибо они иногда сбываются.
Я пользуюсь личным ноутбуком на работе и дома. Для доступа к сети мне приходится дважды в день менять сетевые настройки. Причем, как дома, так и в офисе есть привязка к MAC-адресу машины. Поэтому приходится также менять MAC в свойствах сетевой платы.
Чтобы как-то автоматизировать этот процесс, была запущена командная строка и поисковик. Подробности и готовый bat-файл под катом.
Вступление
Занятия bat-аникой
Создаем файл network.bat с содержимым:
@echo off
set /p mesto="Выберите настройки (1 - дом, 2 - работа): "
echo Выбраны настройки - %mesto%
if %mesto% equ 2 goto rabota
:dom
set IFACE="local"
set IP=10.160.100.9
set MASK=255.255.255.0
set GATEWAY=10.160.100.1
set GWMETRIC=1
set DNS1=10.160.100.1
set MAC=001122334455
goto smena
:rabota
set IFACE="local"
set IP=192.168.1.91
set MASK=255.255.255.0
set GATEWAY=192.168.1.1
set GWMETRIC=1
set DNS1=192.168.1.10
set MAC=221133004455
goto smena
:smena
echo Меняем MAC адрес на %MAC%
echo _____
macshift -i "local" %MAC%
echo _____
echo Устанавливаем IP адрес-%IP%
echo Маску подсети-%MASK%
echo Основной Шлюз-%GATEWAY%
netsh interface ip set address name=%IFACE% source=static addr=%IP% mask=%MASK% gateway=%GATEWAY% gwmetric=%GWMETRIC%
echo Устанавливаем основной DNS сервер %DNS1%
netsh interface ip set dns name=%IFACE% source=static addr=%DNS1% register=PRIMARY
echo Настройки сети изменены:
ipconfig /all
echo _____
pause
Обратите внимание на начало файла, после меток dom и rabota вводим свои настройки.
Примечание: «echo _____» использовано исключительно из эстетических начинаний.
Последние приготовления
Программу macshift и батник я разместил в d:\program\network. А на рабочий стол вынес ярлычок network.lnk. При запуске ярлыка командный файл начинает работу с вопроса о выборе настроек. Нажав «1», получаем настройки для дома, соответственно, «2» — для офиса.
Может быть кому-то данный топик окажется полезным.
Года полтора назад была у меня такая рутинная работа: приходя на работу – вводить IP-адрес, маску, шлюз, DNS для Ethernet-порта ноутбука, а приходя домой – менять все эти параметры на другие. Первое время я мирился, но длилось это недолго – ну как можно каждый день делать одно и то же!? Тогда и вышел я на след Windows-утилиты netsh, которая, вкупе с batch-файлом дала возможность делать то же самое, но гораздо (!) быстрее и удобнее (используя стандартные средства Windows и всего один текстовый файл).
Здесь утилита netsh уже была немного описана, но я предлагаю другую реализацию, возможности которой будут более гибкими.
Netsh
Итак, поигравшись с netsh на Windows 7 (для Windows XP синтаксис немного меняется) я обнаружил, что можно присвоить интерфейсу (в приведенном ниже примере — интерфейсу под названием «LAN») IP-адрес, маску и шлюз с помощью команды:
Команды, понятное дело, вводятся в командной строке Windows. Если параметры отказываются изменяться — запускаем cmd от имени администратора.
Если понадобится добавить еще один IP-адрес, то используем:
Две следующие команды очищают список DNS-серверов и выставляют IP-адрес 212.154.163.162 первым в списке DNS-серверов:
Чтобы предоставить возможность назначения сетевых параметров DHCP-серверу используем:
Ну и для отображения текущих параметров можно использовать:
Batch-файлы
На этом закончим наше знакомство с netsh и перейдем к batch-файлами Windows (текстовый файл с расширением «bat»), который позволяет не только автоматизировать ввод длинных команд (в том числе и netsh-комманд), но также поможет сделать этот процесс более интересным, интерактивным и не заставит нас использовать для каждого варианта настроек отдельный файл.
Для вывода на экран используется команда «ECHO» (она будет использоваться для вывода своеобразного меню):
Для условного перехода к метке воспользуемся связкой «IF» и «GOTO» (если кто знает, можно ли использовать Case — буду рад упростить итоговый скрипт):
Для обозначения метки (в нашем случае метки «one») используется двоеточие:
Итого
На этом можно закончить и торжественно сообщить, что Вы знаете все, что нужно для того, чтобы полностью разобраться в итоговом batch-файле (есть комментарии на русском языке) и переделать его под себя. Вот ссылка на страничку гугл-проекта QNet (сделал по аналогии с Yet Another Net Switcher — спасибо автору, раньше этим не пользовался). Ах да, комментарии в batch-файлах начинаются с «rem».
P.S. Теперь ни на работе, ни дома этим скриптом почти не пользуюсь (есть DHCP), но в командировках — по-прежнему очень удобная вещь.
P.P.S. С русскоязычным названием «Подключение по локальной сети» скрипт может и не сработать, но я давно привык именовать сетевые карты как «LAN» и «WLAN».
По службе приходится часто и много создавать зоны ДНС, добавлять или изменять в них записи. Вручную это довольно кропотливый и сложный процесс: ведь надо держать в голове синтаксис и не ошибаться в мелочах. Для таких вещей самое оно заставить работу выполнять компьютер.
IAdmin — это система создана для автоматической генерации конфигов Bind на хостинговом сервере и представляет собой базу iadmin в БД MySQL и скрипт, который на основании данных из базы генерирует конфигурационные файлы. Для настройки Bind используются таблицы dns_domains, dns_records, dns_subgmail. Основной скрипт, написанный на перле читает данные из БД iadmin и создаёт файлы конфигурации. Файлы зоны генерируются в дирректории /var/cache/bind/. Там же хранятся и прочие файлы зон, которые не обслуживаются системой iadmin. Этой же системой создаётся конфиг для secondary-DNS, который туда и переносится. До тех пор, пока скрипт не отработает, все изменения из БД НЕ материализуются.
Данные
Таблица dns_domains
- id — порядковый номер записи
- domainname — имя домена, зону которого будет поддерживать Bind
- www — Требуется ли поддомен www (1 — требуется)
- ftp — Требуется ли поддомен ftp (1 — требуется)
- mail — Требуются ли в зоне записи MX (1 — требуются)
- typemail — Определяет шаблон генерации MX-записей ('our' — Postfix будет обслуживать, 'gmail' — на домене активировано Google Apps). Если mail = 0 данное поле игнорируется. В дальнейшем возможны другие изменения
- secondaryfor — Для каких DNS-серверов (IP), наш сервер будет secondary (NULL — master)
- hosted_on — Запись A: IP адрес, где хостится сайт, с данным доменным именем
- enable — Активная ли зона (1 — активная). Иначе, не генерируется данная зона. Стоит обратить внимание, что если зону ответить enable = 0, это не выбросит её из обслуживания bind, но любые настройки через систему iadmin не будут окахывать никакого воздействи
- serial — Serial зоны. После любых изменений в этой таблице, или в dns_records, dns_subgmail, требуется увеличить значение. Строение год_месяц_день_правка — таким образом удобно видеть когда были изменения зоны.
- owner — писать NS-серверы англояцызные (1) или стандартные (0)
Данная запись позволит сгенерить файл зоны приблизительно следующего содержания:
Таблица dns_records
Таблица служит для добавления в зону произвольных записей и состоит из следующих полей:
- domainname — Имя доменной зоны, в которую добавляется запись
- rectype — какого типа добавляется запись (A, CNAME, MX, NS, и прочее)
- data — Данные, которые добавляются
- enabled — Принимает значение 1 — данная запись будет добавляться и 0 — запись деактивирована
- id — порядковый номер записи (автоматически)
Таблица dns_subgmail
Таблица служит для упрощения написания зон, в которой есть несколько поддоменов, с использованием Google Apps и состоит из следующих полей:
- id — порядковый номер записи (автоматически)
- domainname — Имя доменной зоны, в которой используется поддомен subdomain
- subdomain — Поддомен на который также требуется Google Apps
- enable — Принимает значение 1 — данный поддомен будет добавляться и 0 — запись деактивирована
id | domainname | subdomain | enable |
56 | iadmin.vip | sync | 1 |
Тогда доменная зона будет выглядеть следующим образом:
Также, надо помнить, что после этого надо изменить serial в dns_domains доменной зоны.
Скрипт
Скрипт, на основании данных хранящихся в iadmin, пишет конфигурационные файлы для bind (Сейчас он на перле, в дальнейшем будет переписан скорее всего на python).
Исходные тексты размещены на github
Конфигурация компьютера | |
Процессор: Intel i5-6600 | |
Материнская плата: Gigabyte GA-Z270X-UD5 | |
Память: HX424C12SB2K2/16 - 16 Gb | |
HDD: Samsung 860 EVO MZ-76E500BW - 1 шт., Samsung 860 QVO MZ-76Q2T0BW - 1 шт, Seagate ST1000DM003 - 1 шт, WD WD40EFRX - 1 шт. | |
Видеокарта: Nvidia GeForce GTX 1070 | |
Звук: Creative X-Fi Titanium Fatal1ty Professional (PCI Express) | |
Блок питания: Seasonic SS-660XP (Platinum-660) | |
CD/DVD: PIONEER DVR-218L | |
Монитор: ASUS PA248QJ, 24,1" | |
Ноутбук/нетбук: Lenovo ThinkPad X270 | |
ОС: Windows 7 Pro 64-bit | |
Индекс производительности Windows: 7,6 | |
Прочее: Корпус: Cooler Master 690 II Advanced (RC-692A-KKN5). Колонки: Microlab H-500D. Мышь: Corsair M65 PRO RGB. ZyXEL Keenetic Ultra II. |
Нужен vbs скрипт для смены/замены DNS только на активном сетевом интерфейсе. Подразумевается, что название активного сетевого интерфейса неизвестно. Работать скрипт должен в Win XP/7.
Данное задание напоминает топик Смена адресов DNS на всех компах в домене, но предложенный там вариант не совсем подходит, а именно нужно смена dns только на текущем (активном) интерфейсе, не затрагивая остальные интерфейсы (GPO не предлагать, т.к. скрипт планируется запускать не только в доменной структуре).
P.S. В интернете есть множество примеров скриптов но полностью отвечающего такому запросу не нашёл:
-------
Слабый всю жизнь идёт лёгкой дорогой, черта сильного выбрать трудный путь.
Будь осторожен в своих желаниях, ибо они иногда сбываются.
Читайте также:
- Ваш dns изменяется а конфиденциальная информация может быть перехвачена 360 total
- Snowrunner не подключается к кооперативу провайдер дом ру
- Чем отличается промышленный компьютер от обычного
- Добавить водяной знак в pdf foxit reader
- В какие цвета может быть окрашен пиксель если битовая глубина равна 1