Daemon de controle do host. Daemon, que monitora outros hosts com solicitações de ping (ICMP) e controla alguns deles com pacotes WOL (Wake on LAN).
O objetivo principal é controlar um/vários hosts Linux (por exemplo, servidor SMB) por algum host do Central Linux. Isso é para economizar energia, fechando os servidores não necessários automaticamente.
O host central onde hostcontrold está em execução monitora não apenas o host para controlar (servidor), mas também os clientes deste servidor. Se um dos hosts cliente configurado for detectado por um ping, o controlador central inicia o host do servidor usando um pacote Magic Wol. Isso permite executar apenas servidores se alguns clientes estiverem em funcionamento. Se todos os clientes desligarem o servidor também será interrompido após um período de tempo limite especificado.
Todos os recursos:
Clone o repositório no seu host Linux Central Control.
Instale dependências de construção com:
sudo apt install make cmake g++ pkg-config libtool
Construir e instalar:
cd hostcontrold && mkdir build && cd build
cmake ..
sudo make -j4 install
O arquivo de configuração está localizado em /etc/hostcontrold.conf . Se você iniciar o daemon sem um arquivo de configuração criado, um padrão será gerado. Você pode adicionar mais blocos arbitrários e clientes arbitrários por servidor.
Você pode testar se um host respostas às solicitações do ICMP usando o ping:
ping 192.168.0.6
Um exemplo de comandos que o usuário do aplicativo poderia usar para preparar um host do servidor onde o clang do usuário deve ser usado para fazer login via SSH:
ssh-keygen
ssh-copy-id [email protected]
Você pode testar se está tudo bem se o comando a seguir funcionar sem qualquer entrada do usuário:
Informe o Systemd o novo daemon, ative o AutoStart na inicialização do sistema e inicie o daemon.
sudo systemctl daemon-reload
sudo systemctl enable hostcontrold
sudo systemctl start hostcontrold
Use sudo systemctl restart hostcontrold após alterar a configuração.
Para visualizar o registro do uso de daemon:
journalctl -e -u hostcontrold
Após a instalação e inicialização, o daemon será executado e monitorará todos os hosts configurados constantemente. Você pode ver o estado de um host de servidor visualizado pelo arquivo on / off no Director de Controle Configurado. Ao criar arquivos simples no diretório, você pode forçar algum comportamento específico:
| Nome do arquivo | contente | recurso |
|---|---|---|
force_on | vazio | manterá o servidor ligado |
force_off | vazio | manterá o servidor desligado |
Consulte as etapas Installation na seção Quick start guide para obter informações sobre como criar.
O código em si é organizado como um projeto puro de cmake com código C ++ 14. O IDE preferido para trabalhar no código é Clion.
Todas as etapas de desenvolvimento também podem ser feitas no recipiente preparado do Docker. Eles são usados principalmente para construir e testar o código com o fluxo de trabalho de ação do GitHub em diferentes distribuições/cadeias de ferramentas, mas também pode ser usado para o desenvolvimento local. O Ubuntu com GCC é usado por padrão.
# 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
Para testes de unidade, a estrutura googletest é usada. Isso é instalado automaticamente nos recipientes do Docker. Para instalar diretamente no host, o script fornecido pode ser usado.
sudo development/install_gtest.sh
O binário de teste de unidade é criado pelo CMake Target hostcontrold_test . Para executar o teste, execute diretamente o binário hostcontrold/unittest/hostcontrold_test ou construa o test de destino cmake que usa a estrutura ctest .
sudo . Deixe configurar isso.Mit
Não existe números de versão, liberações, tags ou ramificações. O mestre deve ser considerado a versão estável atual. Todos os outros ramos existentes são ramos de características/desenvolvimento e são considerados instáveis.
Christian Lang [email protected]