Como parte de um fluxo que instala o Ubuntu 16.04 (do zero para totalmente configurado, com um monte de software extra instalado e alterações feitas após a instalação), eu preciso de uma maneira de executar scripts (que são baixados durante a instalação) após a próxima reinicialize (e somente a próxima reinicialização) e remova os scripts e termine com outra reinicialização.
Já tenho um serviço que uso para executar scripts após a primeira inicialização, mas sem excluí-los (isso pode ser acionado novamente mais tarde, se necessário), mas agora descubro que preciso executar scripts que devem ser excluídos depois, como eles contêm informações sensíveis.
O serviço systemd que estou usando para os outros scripts é assim:
[Unit]
Description=First run specifics
After=network-online.target
Requires=network-online.target
[Service]
Type=simple
EnvironmentFile=/etc/default/firstrun
ExecStart=/root/bin/firstrun-wrapper "${PASSWORD}"
[Install]
WantedBy=multi-user.target
/ etc / default / firstrun e / root / bin / firstrun-wrapper são adicionados durante a instalação. O / etc / default / firstrun contém uma senha e é excluído pelo script firstrun-wrapper, impedindo que o serviço seja iniciado novamente após a reinicialização.
O firstrun-wrapper executa vários scripts adicionados durante a instalação e termina com uma reinicialização.
O serviço pode ser usado novamente mais tarde para executar a mesma configuração (adicionando o arquivo / etc / default / firstrun)
Então minha pergunta é. Como posso executar um script após a próxima reinicialização, removendo o script depois que ele foi executado e, depois de remover o script, acionar uma reinicialização?
Não importa para mim se isso usa systemd ou não, e estou bem com um arquivo 'vazio' (significado vazio que não contém informações relevantes / sensíveis) sendo deixado no sistema depois disso.
Meu pensamento inicial foi modificar meu serviço atual. Eu pensei que poderia adicionar outro script no wrapper firstrun que remove certos arquivos e modifica o firstrun-wrapper para não incluí-los mais, e executar esse script através do ExecStopPost, mas isso não é acionado pelo serviço que termina sozinho (pelo que eu pode dizer). Mesmo que eu possa modificar o arquivo wrapper-firper enquanto ele está sendo executado, eu entendo que isso seria uma má prática, então estou tentando evitar isso.