Автоматическая подготовка конфигурационных файлов для Eltex TAU-8.IP
Для автоматической конфигурации TAU-8.IP сам Eltex предлагает использовать ACS/EMS разработанную их силами. Многими используется для конфигурирования GPON оборудования, а зоодно умеет конфигурировать и VoIP-шлюзы (даже другого производителя). Причины, по которым, не используется это решение озвучиваться не буду. Но необходимость в автоматической конфигурации вновь подключаемых VoIP шлюзов производства Eltex не отпала.
Для решения этой задачи был написан небольшой скрипт. Но обо всем по порядку.
TAU-8.IP может получать конфигурационный архив через DHCP option 66
. Начиная с прошивки версии 1.9 опция получения IP адреса через DHCP включена по умолчанию. Нас это устраивает. Устройство получает адрес tftp-сервера и пытается забрать с него конфигурационный файл с именем по mac-адресу AABB.CCDD.EEFF.cfg
. Если забрать получилось, то устройство распаковывает этот архив во временную директорию и перезагружается, чтобы прочитать новый конфиг во время загрузки.
Все происходит в FreeBSD, для Linux изменения будут минимальными. Для генерации архива используется скрипт, написанный на Perl
, который периодически запускается через cron
. Из особенностей этих конфигурационных файлов хочется отметить следующее:
- Это обычный .tar.gz архив
- Файл должен быть сгенерирован только GNU Tar’ом, т.к. busybox на TAU-8.IP умеет распаковывать только их
- Будет меняться только конфигурация портов на устройстве
Первым делом надо подготовить устройство к работе в сети провайдера, сохранить конфигурационный файл. После распаковать его в директорию /usr/local/share/eltex/template/
. Далее будет происходить замена только одного файла tmp/etc/config/pbx
, в котором хранятся конфиги для портов. Поместить скрипт в /usr/local/share/eltex/tau8_config.pl
и сделать его исполняемым.
Скрипт берет из базы данных список всех устройств, а далее для каждого устройства выбирает список номеров на каждый порт. Производит пересоздание конфига на порты, запаковывает архив и перемещает его в директорию tftp
сервера.
В crontab
скрипт прописывается таким образом:
*/10 * * * * /usr/bin/lockf -t 0 /tmp/eltex_config.pid /usr/bin/perl /usr/local/share/eltex/tau8_config.pl
Сам скрипт: