У меня есть два сценария, второй полагается на первый:
b_reb
:
Этот сценарий создает файл модуля для второго сценария. В a_reb
сервис следует запускать только после того, как root
пользователь входит в систему и должен выполняться в том же сеансе, что и root
.
Здесь b_reb
сценарий:
#!/bin/bash
# Installing updates and other software
echo "Creating systemd unit file..."
cat << EOF > /usr/lib/systemd/system/a_reb.service
[Unit]
Description="Basic setup"
[Service]
WorkingDirectory=$(pwd)
Type=forking
ExecStart=/bin/bash $(pwd)/a_reb
KillMode=process
[Install]
WantedBy=multi-user.target
EOF
echo "Enabling a_reb at startup..."
systemctl enable a_reb.service
reboot now
Итак, сервер перезагружается и root входит в систему. Теперь в том же сеансе a_reb
следует выполнить, запустив a_reb.service
. Я не сделал a_reb
пока нет, но его содержание не имеет значения.
Например: после входа в систему root, a_reb
выполняется и выводит запрос на ответ root.
Я надеюсь, что смогу правильно объяснить. Я также открыт для других способов сделать это. Основная идея b_reb
что-то делает, затем перезагружается, после чего a_reb
запускается, как только root входит в систему после перезагрузки.
[ОБНОВИТЬ]
b-reb
устанавливает обновления и необходимые пакеты в систему. Впоследствии он меняет avahi-daemon
имя хоста для .alocal
. Затем серверу необходимо перезагрузиться.
a_reb
настраивает установленное программное обеспечение и присоединяется к домену. Присоединение к домену выглядит так:
# Get adm-user for domain-join
read -p 'adm username for domain-join: ' ADM
echo "Continuing as $ADM..."
realm join MYDOMAIN.LOCAL –U $ADM
Вот почему мне нужно, чтобы сценарий запускался от имени пользователя root (я не хочу использовать sudo). Нас 4 человека, которые будут использовать это, и у каждого из нас есть собственный адм-пользователь. realm
запросит пароль пользователя, так что в этом нет необходимости.
Ваши задачи:
b-reb устанавливает в систему обновления и необходимые пакеты. Впоследствии он изменяет имя хоста avahi-daemon на .alocal. Затем серверу необходимо перезагрузиться.
a_reb настраивает установленное программное обеспечение и выполняет присоединение к домену.
Если вы собираетесь вообще усложнить это, я бы предложил использовать Ansible, Puppet или Chef для реального управления конфигурацией - и на самом деле вы заметили, что планируете автоматизировать это в будущем. Следовательно:
Превратить это в услугу - ненужное осложнение. И что вы пытаетесь делать с a_reb
когда служба читает с консоли, это плохая практика. Просто поместите свои два сценария оболочки в /usr/sbin
и проинструктируйте своих четырех пользователей запускать их, когда процедура (я не совсем понимаю это из вашего описания).