Выполнение Скрипта перед Запуском Дэмона/Сервиса

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
CrazyMihey
проходил мимо
Сообщения: 7
Зарегистрирован: 2016-10-28 20:11:33

Выполнение Скрипта перед Запуском Дэмона/Сервиса

Непрочитанное сообщение CrazyMihey » 2019-10-23 14:37:57

Благоприятной Кармы Всем, читающим этот Вопрос!
Подскажите, пожалуйста, Знающие Админы, как осуществить Subj при НижеОписанных Условиях.
Задача следующая: Запускается некий Дэмон, для Примера, назовём Его «hostapd». Непосредственно перед самым Запуском (Точнее только на: start, restart и reload) хочу выполнять Свой Скриптик, который призван подрихтовать некий Конфиг, назовём Его, к примеру, «/etc/hostapd.conf». Осуществить Запуск необходимо из «/etc/rc.conf», не перекорячивая при этом «/etc/rc.d/hostapd» или какие-либо другие Файлы из «/etc/*». Естественно, «/etc/rc.conf» и «/etc/hostapd.conf» будут изменены, но Они «не входят» в Поставку FreeBSD и Их редактирование не вызывает распухания Камасутры при выполнении «make installworld».
В Документации и Статьях по Системе «rc.d» в основном описывается Процесс создания Собственного Дэмона, но в данном случае Задача стоит другая: Приколхозить Свой Скрипт на ЗаПуск/ПереЗаПуск уже существующего.
Собственно, сам Вопрос состоит в том, как докопаться до Переменных, вроде «start_precmd», «reload_precmd» и «restart_precmd» из Конфигурационного Файла «/etc/rc.conf», не изменяя другие Файлы? Или Я что-то НеДоПонимаю?
Пока сделал так «/etc/rc.conf»:

Код: Выделить всё

hostapd_enable="Yes"
hostapd_flags="${hostapd_flags}$([ -x /root/bin/CheckHostApD ] && /root/bin/CheckHostApD >/dev/null 2>&1)"
Но осознаю, что Это Решение в Корне неправильное и жутко костыльное. Покопавшись во Фряшных Скриптах, обнаружил, что «/etc/rc.conf» может подцепляться везде и всюду, т.е. Мой Скрипт будет выполняться десятки раз впустую. Скрипт оптимизировал, конечно, но это всё равно не Решение.
Также была осуществлена попытка добавления в Конфиг «/etc/hostapd.conf» Динамических Параметров вида:

Код: Выделить всё

channel="$(sed -E -e "…" "/etc/rc.conf")"
Но Это не сработало вообще. Видимо, «/etc/hostapd.conf» читается как «Обычный Файл Настроек "Param=Value"» и не прогоняется через SH (Может туда Шебанг надо было запихнуть?).
Заранее Благодарю Всех Откликнувшихся!
P.S. НеОбХодимость периодического «make installworld» и НеТрогания «/etc/*» — Вопрос Риторический и Тема для Жирного ХолиВара, который не хотелось бы разворачивать здесь.
Всё решается просто :good:, кроме того, над чем застрял в данный Момент :fool:

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

snorlov
подполковник
Сообщения: 3929
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Выполнение Скрипта перед Запуском Дэмона/Сервиса

Непрочитанное сообщение snorlov » 2019-10-24 0:18:08

Вы конкретику дайте, о каком демоне идет речь, может там такой демон, у которого пре и после скрипты можно указать...
Лучше взять стандарный скипт запуска нужного сервиса, на его основе написать свой, и переименовать его, ну будет запускаться сервис к примеру не hostapd, а hostapd_my...

Аватара пользователя
CrazyMihey
проходил мимо
Сообщения: 7
Зарегистрирован: 2016-10-28 20:11:33

Выполнение Скрипта перед Запуском Дэмона/Сервиса

Непрочитанное сообщение CrazyMihey » 2019-10-24 1:16:29

Спасибо, буду рыть в Этом направлении.
В Стандартном Переменные «start_precmd», «reload_precmd» и «restart_precmd» не задаются. Попробую сделать Свой в «/usr/local/etc/rc.d/» и в конце через Точку «.» подцепить уже Существующий из «/etc/rc.d/», только вижу, что придётся придётся копировать Комменты типа:

Код: Выделить всё

# PROVIDE: …
# REQUIRE: …
# KEYWORD: …
, возможно, ещё что-то.
Всё решается просто :good:, кроме того, над чем застрял в данный Момент :fool: