Reiniciando um serviço systemd em um evento 'up' de rede

3

Meu sistema requer o uso de uma vpn, da qual eu uso expressvpn , que é baseado no OpenVpn, mas usa seu próprio daemon systemd . Todos os comandos de conexão / desconexão devem passar pelo binário fornecido. Para não digitar esses comandos no terminal após cada reinicialização ou ativação do modo sleep (e para configurar algumas regras de iptable), coloquei um script em /etc/NetworkManager/dispatcher.d/ capturando o evento 'up'.

Enquanto o script funciona, estou com problemas com expressvpn connect . Depois de acordar do sono, ele age como se vários comandos de conexão tivessem sido chamados. Uma solução simples é reiniciar o serviço.

Eu posso emitir um comando systemctl restart expressvpn seguido por um comando expressvpn connect do terminal (como usuário e sudo) sem nenhum problema, mas se eu adicionar o comando restart ao script dispatcher, algo será quebrado.

Esta é a parte problemática do script (incluindo minhas linhas de registrador temporário):

date "+%H:%M:%S %d/%m/%y" &> /home/twifty/Desktop/up-log.txt

echo "restarting..." >> /home/twifty/Desktop/up-log.txt

#systemctl stop expressvpn >> /home/twifty/Desktop/up-log.txt
#systemctl start expressvpn >> /home/twifty/Desktop/up-log.txt
systemctl restart expressvpn.service

echo "connecting..." >> /home/twifty/Desktop/up-log.txt

#/usr/bin/expressvpn status >> /home/twifty/Desktop/up-log.txt
/usr/bin/expressvpn disconnect >> /home/twifty/Desktop/up-log.txt
/usr/bin/expressvpn connect >> /home/twifty/Desktop/up-log.txt

echo "setup..." >> /home/twifty/Desktop/up-log.txt

O comando expressvpn disconnect e connect deve exibir seu sucesso ou falha, mas nada é gravado no arquivo.

O status do serviço systemctl status expressvpn após a execução do script se parece com:

● expressvpn.service - ExpressVPN Daemon
   Loaded: loaded (/usr/lib/systemd/system/expressvpn.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2017-08-21 11:53:20 CST; 16s ago
 Main PID: 5043 (expressvpnd)
    Tasks: 10 (limit: 4915)
   CGroup: /system.slice/expressvpn.service
           └─5043 /usr/sbin/expressvpnd --client-version 1.2.0 --client-build 167

Aug 21 11:53:20 twifty-lynx systemd[1]: Started ExpressVPN Daemon.
Aug 21 11:53:20 twifty-lynx expressvpnd[5043]: /sbin/resolvconf: illegal option -- -
Aug 21 11:53:20 twifty-lynx expressvpnd[5043]: /sbin/resolvconf: illegal option -- e
Aug 21 11:53:20 twifty-lynx expressvpnd[5043]: /sbin/resolvconf: illegal option -- n
Aug 21 11:53:20 twifty-lynx expressvpnd[5043]: event_dispather: invalid subscriber addr or protocol2017/08/21 11:53:20 method Authenticate 
Aug 21 11:53:20 twifty-lynx expressvpnd[5043]: 2017/08/21 11:53:20 method SetAuth has wrong number of ins: 2
Aug 21 11:53:20 twifty-lynx expressvpnd[5043]: openvpn-expressvpn: no process found

Considerando que, a partir do terminal, a saída conterá:

Aug 21 13:12:09 twifty-lynx sudo[4673]:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/sbin/dmidecode -s system-uuid
Aug 21 13:12:09 twifty-lynx sudo[4673]: pam_unix(sudo:session): session opened for user root by (uid=0)
Aug 21 13:12:09 twifty-lynx sudo[4673]: pam_unix(sudo:session): session closed for user root

sem a linha systemctl restart , o script é executado corretamente ou, se eu executar esse comando como eu mesmo sudo -u twifty systemctl restart , ele também será bem-sucedido. Eu acredito que este é um bug dentro do próprio expressvpn (não suportando múltiplos usuários simultâneos).

Eu não quero codificar o meu nome de usuário dentro do script, eu também quero apoiar o acesso remoto, bem como local. Como posso configurar isso para suportar vários usuários?

Atualização:

Prefixar os comandos com sudo -u twifty não funciona. Ao acordar de um longo tempo de espera, o expressvpn ainda age como se vários comandos de conexão tivessem sido chamados, como é evidente, havendo duas tunX interfaces criadas quando deveria haver apenas um único tun0 . Este é exatamente o mesmo comportamento que eu notei antes de redefinir a correção do serviço.

    
por Twifty 21.08.2017 / 07:36

0 respostas