Архів мітки: BIND

Заміна IP адреси у файлах зон BIND

Є такі люди, що люблять подорожувати. Іноді сайти та сервіси теж зриваються з насидженого місця та вирушають у дорогу. Така міграція – справжній головний біль для системного адміністратора. Коли мова йде про 1-2 сервіси, це не проблема, а от коли переїжджає цілий хостінг.

Задача: є сервер імен BIND в якому треба поміняти всі записи зі старим IP на новий. Справу ускладнює те, що не всі зони треба міняти (оновлювати serial). Зміни мають зачепити лише ті файли зон, в яких дійсно змінюється IP. Як правило, я роблю такі зміни за допомогою Perl сценарію, але сьогодні спробував вичавити по максимуму командний рядок Лінукс.

У каталозі /etc/bing/db були зібрані файли зон, але були вкладені каталоги та символічні посилання. Тому на першому етапі відбираємо лише файли з каталогу та не чіпаємо підкаталоги:

find /etc/bind/db -maxdepth 1 -type f

Через xargs направляємо файл до grep

grep -H -m 1 '75.147.252.194'

Аргумент -H обов’язково додасть ім’я файлу до виводу, а -m 1 – покаже лише перше згадування старої IP-адреси.

Тепер залишаємо лише ім’я потрібного файлу зони (перший стовпець):

cut -d: -f1

Цю конструкцію я додав до Perl сценарію і на виході мав перелік файлів, в яких потрібно було зробити заміну IP та serial номер зони:

my $db_dir = "/etc/bind/db";
my $old_ip = '75.147.252.194';

my @files = `find $db_dir -maxdepth 1 -type f |
 xargs grep -H -m 1 '$old_ip' |
 cut -d: -f1`;

Заміна одного рядка на два у вбудованому текстовому редакторі Midnight Commander

Не знаю як вам, а мені подобається вбудований текстовий редактор mc. Чогось я так і не зміг оволодіти vim, тому на новому сервері в мене перша команда:

# apt-get install mc

Потім включаю у конфігурації вбудований текстовий редактор для редагування:

F9 / Options / Configurations… / Use internal edit / OK

Тепер клавіша F4 закріплена саме за вбудованим редактором.

Нещодавно, мені довелось вручну правити файл конфігурації сервера імен BIND. Там було доволі багато зон для яких треба було замінити рядок:

type master;

на 2 рядка:

type slave;
masters {192.168.0.1;};

Пошук та заміна у вбудованому редакторі є (F4 Replace), проте незрозуміло як замінити рядок на два рядки. Клавіша Enter працює як OK.

Після декількох спроб я знайшов вихід. Треба перемкнути пошук у режим Regular expression та ввести символ нового рядка як n. Таким самим чином можна додавати символи табуляції – t.