ホストコントロールデーモン。 Pingリクエスト(ICMP)で他のホストを監視し、WOL(Wake on LAN)パケットでそれらの一部を制御するデーモン。
主な目的は、いくつかの中央Linuxホストによって1つの/複数のLinuxホスト(SMBサーバーなど)を制御することです。これは、必要でないサーバーを自動的にシャットダウンすることにより、電源を節約するためです。
hostcontroldが実行中の中央ホストは、To To Host(サーバー)だけでなく、このサーバーのクライアントを制御するだけでなく、監視します。構成されたクライアントホストの1つがPingによって検出された場合、マジックWOLパケットを使用して、セントラルコントローラーがサーバーホストを起動します。これにより、一部のクライアントが稼働している場合にのみサーバーを実行できます。すべてのクライアントがシャットダウンした場合、指定されたタイムアウト期間後にサーバーもシャットダウンします。
すべての機能:
Central Control Linuxホストのリポジトリをクローンします。
ビルド依存関係をインストールしてください:
sudo apt install make cmake g++ pkg-config libtool
ビルドとインストール:
cd hostcontrold && mkdir build && cd build
cmake ..
sudo make -j4 install
構成ファイルは/etc/hostcontrold.confにあります。作成された構成ファイルなしでデーモンを起動すると、デフォルトのファイルが生成されます。サーバーごとに、より多くのサーバーブロックと任意のクライアントを追加できます。
Pingを使用して、ICMP要求に対するホスト応答が次のかどうかをテストできます。
ping 192.168.0.6
アプリケーションユーザーがSSHを介してログインするためにユーザーclang使用する必要があるサーバーホストを準備するために使用できるコマンドの例:
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
インストールと起動後、デーモンは実行して、構成されたすべてのホストを絶えず監視します。構成されたControl-Directoryのon / offファイルによって視覚化されたサーバーホストの状態を確認できます。ディレクトリに簡単なファイルを作成することで、特定の動作を強制できます。
| ファイル名 | コンテンツ | 特徴 |
|---|---|---|
force_on | 空の | サーバーの電源をオンにします |
force_off | 空の | サーバーの電源を下げたままにします |
情報の構築方法については、 Quick start guideセクションのInstallation手順を参照してください。
コード自体は、C ++ 14コードを備えた純粋なCmakeプロジェクトとして編成されています。コードで作業するよりも優先されるIDEはCLIONです。
開発手順全体は、準備されたDockerコンテナでも実行できます。これらは主に、さまざまなディストリビューション/ツールチェーンのGitHubアクションワークフローを使用してコードを構築およびテストするために使用されますが、ローカル開発にも使用できます。 GCC付きのUbuntuはデフォルトで使用されます。
# 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 Target hostcontrold_testによって作成されます。テストを実行するには、Binary hostcontrold/unittest/hostcontrold_test直接実行するか、 ctestフレームワークを使用するCmakeターゲットtestを作成します。
sudo必要としない場合があります。これを設定してください。mit
バージョン番号、リリース、タグ、またはブランチは存在しません。マスターは、現在の安定したリリースと見なされる必要があります。他のすべての既存のブランチは機能/開発ブランチであり、不安定であると考えられています。
Christian Lang [email protected]