inicia o script depois de continuar como usuário logado (não raiz)

1

Estou executando o cliente owncloud no Ubuntu e depois de uma suspensão / retomada há um bug no owncloud que faz com que ele não consiga se conectar ao servidor.

Eu escrevi um pequeno script que deve reiniciar o owncloud, mas isso não acontece. Eu coloquei em /lib/systemd/system-sleep e o script é executado. Conteúdos:

#! /bin/sh
 case  in
     pre)
        echo "$(date) off" >> /var/log/sulog.txt #debugging
    ;;
     post)
         echo "$(date) on" >> /var/log/sulog.txt #debugging
         killall owncloud
         /usr/bin/owncloud
         echo "$(date) started owncloud" >> /var/log/sulog.txt #debugging
    ;;
 esac

O script é executado conforme o arquivo de log é atualizado. No entanto, ele não mata a instância owncloud ativa e não inicia uma nova quando eu retomo após uma suspensão.

Quando executo o script no terminal como o usuário atual, ele funciona como eu quero. Quando eu executo isso no root ele mata a instância owncloud, mas ele inicia um novo sem as configurações do servidor etc. Eu trabalhei com sudo -H -u <user> bash <....> para iniciá-lo como outro usuário, mas ele não funciona porque não tem o chaveiro desbloqueado.

Como posso /usr/bin/owncloud de dentro do script (que é executado como root) como o usuário atual com a sessão atual para que o ícone também seja adicionado à barra de status?

    
por Maurits 22.05.2016 / 21:46

1 resposta

1

Você está sem a definição DISPLAY. Além disso, fazer depender a conexão de rede é melhor. Para mim em arch linux funciona:

/etc/NetworkManager/dispatcher.d/20-owncloud

 #!/bin/sh
 case "" in
       up)
               # is called as soon as connection is up
               env DISPLAY=:0 sudo -u yourusername owncloud
       ;;
       down)
               # yes, maybe that is better in system-sleep
               killall owncloud
       ;;
esac

O script precisa ser de propriedade de root:

sudo chown root:root /etc/NetworkManager/dispatcher.d/20-owncloud

Não se esqueça de tornar esse script executável:

sudo chmod 755 /etc/NetworkManager/dispatcher.d/20-owncloud

e inicie / ative o despachante NetworkManager:

sudo systemctl start NetworkManager-dispatcher.service
sudo systemctl enable NetworkManager-dispatcher.service

Pelo menos no arco funciona dessa forma, talvez um pouco outros nomes no Ubuntu.

    
por Bazon 02.07.2016 / 13:37