![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Парсинг конфигов BIND |
|
PowerShell - [решено] Парсинг конфигов BIND
|
Ветеран Сообщения: 992 |
Имеется DNS на BIND, возникла нужность перетянуть то что в нем осталось в виндовый DNS, и, разумеется, делать этого руками сильно не хочется.
Конфиги имеют примерно такой вид
$TTL 300 @ IN SOA ns.dmn.loc. hostmaster.dmn.loc. ( 2021060201 ; serial 21600 ; refresh 1800 ; retry 1209600 ; expiry 7200 ) ; minimum IN NS ns.dmn.loc. IN MX 5 mail.dmn.loc. @ IN A 192.168.4.55 * IN A 192.168.4.55 web IN A 192.168.4.56 mysql IN A 192.168.4.57 cache IN A 192.168.4.58 rabbit IN CNAME cache redis IN CNAME cache зона = имя файла (в данном конкретном случае dmn12.loc) Хотелось бы это как-то распарсить для скармливания в Add-DnsServerResourceRecord, ну или может какие-то другие варианты есть. з.ы. TTL можно игнорировать, оставил только для того чтобы было видно как оно на самом деле есть в файле. |
|
Отправлено: 13:48, 21-12-2021 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 15:24, 21-12-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать alpap, это то что в одном из конфигов, в файле зоны. Вывод dig тоже могу показать, но это мало что даст, кмк. Подобных файлов порядочное количество для ручного перекапывания. Ну и есть несколько файлов побольше но выглядят +- так же.
Насчет установки BIND на десятку вообще не понял. Зачем? От BIND есть желание избавиться, для этого те записи которые на нем остались нужно перетащить в виндовый DNS. |
Отправлено: 15:49, 21-12-2021 | #3 |
Deadooshka Сообщения: 2566
|
Профиль | Отправить PM | Цитировать Всё перепарсить в json. Видел разные скриптовые парсеры под node.js, python, есть какой-то zone2json. В ps уже можно энумерировать json-объект в зависимости от формата.
|
Отправлено: 16:44, 21-12-2021 | #4 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать zone2json - вариант, получается весьма себе стройный json, с этим уже можно работать. Спасибо. Пока буду пробовать в эту сторону.
На всякий случай для интересующихся zone2json есть в пакете pdns-server (pdns для rhel). |
|
Отправлено: 18:22, 21-12-2021 | #5 |
fascinating rhythm Сообщения: 6705
|
Профиль | Отправить PM | Цитировать Можно виндовый сервер просто сделать вторичным, и он сам всё перетянет (только его IP надо в BIND указать как доверенный), а потом поднять его до первичного.
|
------- Отправлено: 20:04, 21-12-2021 | #6 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать DJ Mogarych, можно было бы, но есть несколько "но", которые не очень позволяют так сделать. Да и скрипт в целом в общем уже готов...
Остались вопросы по поводу SOA и NS записей, вижу где они редактируются в GUI, но не нашел либо правильных командлетов, либо нужных для этого ключей. Однако если даже это останется нерешенным - подправлю руками, тем более что там все равно были бы замены относительно того что прописано в файлах зон BIND. Как я говорил ранее посредством zone2json были получены вполне вменяемые json, исходя из них получилось что-то вот такое: $jsonzones = Get-ChildItem ./zones/*.json foreach ($jsonzone in $jsonzones) { $Zone = $jsonzone.BaseName Add-DnsServerPrimaryZone -Name $Zone -ReplicationScope Domain -DynamicUpdate NonsecureAndSecure (Get-Content $jsonzone | ConvertFrom-Json).Records | Where-Object type -in A, MX, CNAME | ForEach-Object { if ($_.name -in '.', '*.') { $Name = $Zone } else { $Name = $_.name.TrimEnd('.') } $Type = $_.type $IP = $_.content $prio = $_.prio Switch ($type) { A { Add-DnsServerResourceRecordA -AllowUpdateAny -CreatePtr -Name $Name -ZoneName $Zone -IPv4Address $IP } CNAME { Add-DnsServerResourceRecordCName -AllowUpdateAny -Name $Name -ZoneName $Zone -HostNameAlias $IP } MX { Add-DnsServerResourceRecordMX -AllowUpdateAny -Name $Name -ZoneName $Zone -MailExchange $IP -Preference $prio } Default {"WTF? $type is not correct type of DNS records for this script!"} } } } ![]() |
Отправлено: 17:06, 22-12-2021 | #7 |
Deadooshka Сообщения: 2566
|
Профиль | Отправить PM | Цитировать через WMI можно
|
Отправлено: 18:29, 22-12-2021 | #8 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Для SOA написал свой лисапед. Т.к. штука не так часто нужная особо не изощрялся, но если кому понадобится, то для повторного использования сойдет.
|
Отправлено: 22:04, 09-02-2022 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Redhat/Fedora - Missing Dependency bind | dihlof0s | Общий по Linux | 3 | 01-09-2009 14:55 | |
FreeBSD - Перекрытие конфигов POSTFIX | kryo | Общий по FreeBSD | 2 | 12-11-2008 11:39 | |
Настройка BIND 9.3.1 | xayam | Программное обеспечение Linux и FreeBSD | 8 | 06-07-2005 11:59 | |
Помогите BIND 9 | Alexandr2005 | Сетевые технологии | 3 | 29-04-2005 11:24 | |
bind не стартует | Vich | Программное обеспечение Linux и FreeBSD | 9 | 01-12-2003 14:00 |
|