Назад | Перейти на главную страницу

Удалить зону из named.conf с помощью сценария оболочки

Я пытаюсь удалить существующую запись зоны из файла named.conf привязки (в версии centos 7).

Запись зоны выглядит так:

zone "example.com" IN {
        type master;
        file "example.com.zone";
};

Команда:

sed -nie '/\"example.com\"/,/^\};$/d;p;' /etc/named.conf

удаляет эту запись (как предполагалось).

Затем я создал следующий сценарий оболочки (rm-zone.sh) с разрешениями исполняемого файла для выполнения той же работы:

#!/bin/sh

[ $# -lt 1 ] && {
        echo "usage: $0 <domain>"
        exit 1
}

domain=$1

sed -nie '/\"$domain\"/,/^\};$/d;p;' /etc/named.conf

rndc reload

echo Zone: $domain deleted successfully

Когда я вхожу в систему как root и запускаю команду:

./rm-zone.sh example.com

Я вижу сообщение «Зона example.com успешно удалена», но зона все еще находится в моем файле named.conf ...

Опять же, когда я даю вышеупомянутую команду из cli:

sed -nie '/\"example.com\"/,/^\};$/d;p;' /etc/named.conf

зона правильно удалена !!!

Видимо что-то не так в сценарии оболочки, но не удалось выяснить, что это ...

Будем очень признательны за любые идеи относительно того, что мне здесь не хватает!

Что касается реальной проблемы, которую вы решаете, я думаю, что, вероятно, стоит изучить rndc addzone/rndc delzone (в зависимости от allow-new-zones вариант), чтобы разрешить автоматизацию добавления / удаления зон вместо изменения сценариями named.conf сами.

Хотя я не уверен, что именно идет не так в вашем сценарии, то, как он написан, он просто пропустит и безоговорочно напечатает сообщение «успешно удалено» в конце, что бы ни случилось.

Возможно добавление set -ex в начале сценария поможет устранить неполадки? (И -e может вообще хорошая идея?)

Также может быть разумным сохранить какую-то резервную копию, к которой вы можете вернуться в случае сбоя, и, возможно, вызвать named-checkconf чтобы убедиться, что новый файл кажется вменяемым?

Пытаться

sed -nie "/\"$domain\"/,/^\};"'$/d;p;' /etc/named.conf

вместо того

sed -nie '/\"$domain\"/,/^\};$/d;p;' /etc/named.conf

Одиночные кавычки отключают интерпретацию оболочки либо \| или $domain.