systemd, envie um email após o reinício

0

Estou usando o systemd para fazer o autolaunch de um serviço com o seguinte script: (veja abaixo)

Estou tentando enviar um email antes que o serviço seja iniciado (a linha comentada).

o link no final da linha /home/vincent/wintergreen/service_files/IB_restart_email é o conteúdo do email, como descrito aqui no parágrafo 7.

Unit]
Description=Manages an instance of IBController

[Service]
Type=forking
User=vincent
Group=vincent
ExecStart=/bin/bash -c "cd /opt/IBController && bash IBControllerStart.sh -inline && sleep 10"
# ExecStartPre=/usr/bin/mail -s "Restarting TWS" [email protected] < /home/vincent/wintergreen/service_files/IB_restart_email 
Environment=DISPLAY=:0.0
KillMode=control-group
TimeoutSec=0
Restart=always

[Install]
WantedBy=graphical.target

No entanto, esta linha retorna o erro mail: Cannot parse address <' (while expanding <'): Malformed email address . (eu posso ver a mensagem de erro ao abrir o journalctl)

Este comando funciona quando usado diretamente no shell. Alguém tem uma idéia de como fazer este trabalho de linha de envio de e-mail quando usado a partir do arquivo systemd?

PS: estou usando postfix para o envio de e-mail

    
por jim basquiat 16.05.2018 / 17:38

1 resposta

2

Conforme documentado em man systemd.service , o systemd tem um suporte limitado à sintaxe do shell, que não inclui "<". Então, o caractere é configurado para o comando "mail", resultando nesse erro.

Suponho que você esteja mais interessado em e-mails devido a reinicializações automáticas, o que seria devido a falhas de serviço.

Para isso, a diretiva OnFailure= é a melhor escolha. Use-o para fornecer uma lista separada por espaços de unidades que são ativadas quando a unidade entra no estado de falha.

Já existem soluções prontas para lidar com isso, como este , que enviará por e-mail a saída "status" (incluindo alguma saída de log) do serviço quando ele falhar.

Além disso, considere o uso da diretiva WorkingDirectory= em vez de chamar manualmente "cd" em ExecStart= .

Também não está claro por que o "sleep 10" seria necessário como parte do início do aplicativo.

    
por 16.05.2018 / 18:59