Host Control Dämon. Daemon, der andere Hosts mit Ping -Anfragen (ICMP) überwacht und einige von ihnen mit WOL (Wake on LAN) -Paketen kontrolliert.
Der Hauptzweck besteht darin, ein/mehrere Linux -Hosts (z. B. SMB -Server) von einem zentralen Linux -Host zu steuern. Dies soll Strom sparen, indem keine Server automatisch heruntergefahren werden.
Der zentrale Host, auf dem hostcontrold ausgeführt wird, überwacht nicht nur den Host (Server), sondern auch die Clients dieses Servers. Wenn einer der konfigurierten Client -Hosts von einem Ping erkannt wird, startet der Central Controller den Serverhost mithilfe eines magischen Wol -Pakets. Dies ermöglicht es nur, Server auszuführen, wenn einige Clients in Betrieb sind. Wenn alle Clients heruntergefahren werden, wird der Server nach einem bestimmten Zeitlimitsperiode auch heruntergefahren.
Alle Funktionen:
Klonen Sie das Repository auf Ihrem Central Control Linux -Host.
Installieren Sie Build -Abhängigkeiten mit:
sudo apt install make cmake g++ pkg-config libtool
Bauen und installieren:
cd hostcontrold && mkdir build && cd build
cmake ..
sudo make -j4 install
Die Konfigurationsdatei befindet sich unter /etc/hostcontrold.conf . Wenn Sie den Daemon ohne eine erstellte Konfigurationsdatei starten, wird eine Standardeinstellung generiert. Sie können beliebige Serverblöcke und willkürliche Clients pro Server hinzufügen.
Sie können testen, ob ein Host auf ICMP -Anforderungen mit Ping reagiert:
ping 192.168.0.6
Ein Beispiel für Befehle, mit denen der Anwendungsbenutzer einen Server -Host vorbereiten könnte, bei dem der Benutzer clang sich über SSH anmelden sollte:
ssh-keygen
ssh-copy-id [email protected]
Sie können testen, ob alles in Ordnung ist, wenn der folgende Befehl ohne Benutzereingabe funktioniert:
Seien Sie den neuen Daemon wissen, aktivieren Sie das AutoStart beim Systemstart und starten Sie den Daemon.
sudo systemctl daemon-reload
sudo systemctl enable hostcontrold
sudo systemctl start hostcontrold
Verwenden Sie sudo systemctl restart hostcontrold nach geänderter Konfiguration.
Um das Protokoll der Verwendung des Daemons anzuzeigen:
journalctl -e -u hostcontrold
Nach der Installation und dem Start wird der Daemon alle konfigurierten Hosts ständig ausgeführt und überwacht. Sie können den Status eines Serverhosts sehen, der in der on / off Datei in der konfigurierten Steuerungsverzeichnis visualisiert ist. Wenn Sie einfache Dateien im Verzeichnis erstellen, können Sie ein bestimmtes Verhalten erzwingen:
| Dateiname | Inhalt | Besonderheit |
|---|---|---|
force_on | leer | hält den Server eingeschaltet |
force_off | leer | hält den Server niedergeschaltet |
Informationen zum Erstellen finden Sie in den Installation im Abschnitt Quick start guide .
Der Code selbst ist als reines CMAKE -Projekt mit C ++ 14 -Code organisiert. Die bevorzugte IDE, die am Code arbeitet, ist Clion.
Die gesamten Entwicklungsschritte können auch im vorbereiteten Docker -Container durchgeführt werden. Diese werden hauptsächlich zum Erstellen und Testen des Codes mit dem GitHub -Aktions -Workflow für verschiedene Verteilungen/Toolchains verwendet, können aber auch für die lokale Entwicklung verwendet werden. Ubuntu mit GCC wird standardmäßig verwendet.
# 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
Für Unit -Tests wird das googletest -Framework verwendet. Dies wird automatisch in den Docker -Containern installiert. Um direkt auf dem Host zu installieren, kann das bereitgestellte Skript verwendet werden.
sudo development/install_gtest.sh
Der Unit -Test Binary wird vom CMake -Ziel hostcontrold_test erstellt. So führen Sie den Test entweder direkt den binären hostcontrold/unittest/hostcontrold_test aus oder erstellen Sie den CMake test , bei dem das ctest -Framework verwendet wird.
sudo . Erlauben Sie dies zu konfigurieren.MIT
Es gibt keine Versionsnummern, Veröffentlichungen, Tags oder Zweige. Der Meister sollte als aktuelle stabile Veröffentlichung angesehen werden. Alle anderen vorhandenen Zweige sind Merkmals-/Entwicklungszweige und gelten als instabil.
Christian Lang [email protected]