Como configuro um script Upstart para ser executado antes de permitir o login do usuário?

0

Como parte de um processo de provisionamento de sistema para o Ubuntu 14.04, gostaria de impedir logins de usuário até que meu script seja concluído. Eu tenho um trabalho inicial com o seguinte conteúdo:

start on (local-filesystems and net-device-up IFACE!=lo)
stop on [!12345]

script
    #launch the bash script that does install
    /bin/bash /path/to/provisioning-script.sh
end script

Este script é executado na inicialização, mas não impede que os usuários efetuem login. Eu também tentei a diretiva start

start on starting lightdm

Mas:

  1. não impede logins
  2. se aplica apenas a sistemas que usam lightdm. Alguns de nossos sistemas inicializam apenas na linha de comando

Eu consegui os resultados que eu quero no Ubuntu 16.04 (systemd) com o seguinte código:

[Unit]
DefaultDependencies=no
After=network.target
Before=systemd-user-sessions.service

[Service]
Type=oneshot
ExecStart=/bin/bash /path/to/provisioning-script.sh
StandardOutput=journal+console
StandardError=journal+console

[Install]
RequiredBy=systemd-user-sessions.service

Obrigado!

    
por Andre Geert 02.03.2018 / 18:35

1 resposta

0

Eu respondi a primeira parte da pergunta. Em vez de executar o script na fase started do serviço, quero executá-lo na fase prestart . Para isso, eu precisava adicionar prestart na frente da tag de script.

Essencialmente, o resultado é que o serviço não é considerado started até que os comandos prestart sejam concluídos e o serviço lightdm não seja iniciado até que meu serviço seja started .

start on starting lightdm
stop on [!12345]

prestart script
    #launch the bash script that does install
    /bin/bash /path/to/provisioning-script.sh
end script
    
por 06.03.2018 / 16:57

Tags