Демон управления хостом. Демон, который контролирует других хостов с помощью запросов на Ping (ICMP) и контролирует некоторые из них с помощью WOL (Wake On LAN) пакетами.
Основная цель - управлять одним/несколькими хостами Linux (например, SMB -сервер) некоторым центральным хостом Linux. Это для сохранения питания путем автоматического выключения не нужных серверов.
Центральный хост, в котором работает hostcontrold , контролирует не только хост для управления (сервер), но и клиенты этого сервера. Если один из настроенных клиентских хостов обнаруживается Ping, центральный контроллер запускает хост сервера с помощью Magic WOL Packet. Это позволяет запускать серверы только в том случае, если некоторые клиенты работают. Если все клиенты отключится, сервер тоже отключится после указанного периода времени ожидания.
Все функции:
Клонировать репозиторий на вашем центральном управлении Host Linux.
Установите зависимости сборки с помощью:
sudo apt install make cmake g++ pkg-config libtool
Стройте и установите:
cd hostcontrold && mkdir build && cd build
cmake ..
sudo make -j4 install
Файл конфигурации расположен по адресу /etc/hostcontrold.conf . Если вы запустите демон без созданного файла конфигурации, будет сгенерирован один. Вы можете добавить более произвольные серверные блоки и произвольные клиенты на сервер.
Вы можете проверить, если ответы хоста на запросы ICMP с помощью Ping:
ping 192.168.0.6
Пример команд, которые пользователь приложения мог бы использовать для подготовки хоста сервера, где пользовательский clang должен использовать для входа через SSH:
ssh-keygen
ssh-copy-id [email protected]
Вы можете проверить, если все в порядке, если следующая команда работает без какого -либо пользовательского ввода:
Позвольте SystemD узнать новый демон, включите AutoStart при запуске системы и запустите демон.
sudo systemctl daemon-reload
sudo systemctl enable hostcontrold
sudo systemctl start hostcontrold
Используйте sudo systemctl restart hostcontrold после изменения конфигурации.
Чтобы просмотреть журнал использования демона:
journalctl -e -u hostcontrold
После установки и запуска демон будет работать и постоянно контролировать все настроенные хост. Вы можете увидеть состояние хоста сервера, визуализированное файлом on / off в настроенной управлении. Создавая простые файлы в каталоге, вы можете вызвать определенное поведение:
| имя файла | содержание | особенность |
|---|---|---|
force_on | пустой | будет держать сервер включать |
force_off | пустой | будет держать сервер вниз |
См. Шаги Installation в разделе Quick start guide для получения информации, как построить.
Сам код организован как Pure Cmake Project с C ++ 14 кодом. Предпочтительным IDE для работы над кодом является Clion.
Все этапы разработки также могут быть сделаны в подготовленном контейнере Docker. Они в основном используются для создания и тестирования кода с помощью рабочего процесса действия GitHub на различных распределениях/инструментах, но также могут использоваться для локальной разработки. Ubuntu с GCC используется по умолчанию.
# Build the docker image.
./development/1_create.sh
# Create docker container and run it with the correct mounted volumes.
./development/2_run.sh
# Connect into the container.
./development/3_connect.sh
# Now you are logged-in the docker container.
cd /tmp/hostcontrold/
# Now you are in the source directory where you can compile and run tests e.g.
mkdir build
cd build
cmake ..
make -j4
# Leave the container with the following command when you are finished developing/testing.
exit
# Remove all signs of the docker container.
./development/5_remove.sh
Для модульных тестов используется структура googletest . Это автоматически установлено в контейнерах Docker. Чтобы установить непосредственно на хосте, можно использовать предоставленный скрипт.
sudo development/install_gtest.sh
Двоина для модульного теста создается целевым целевым Cmake hostcontrold_test . Чтобы запустить тест, либо непосредственно выполнить бинарный hostcontrold/unittest/hostcontrold_test либо создайте целевой test Cmake, который использует структуру ctest .
sudo . Разрешить настроить это.Грань
Там нет номеров версий, выпусков, тегов или филиалов. Мастер должен считаться текущим стабильным выпуском. Все остальные существующие ветви являются филиалами/развитием и считаются нестабильными.
Christian Lang [email protected]