Serviço Systemd executado quando a interface de rede para cima / baixo (eth0)

1

Eu gostaria de executar um serviço do systemd cada vez que o eth0 sobe / desce (talvez um serviço separado para cima e para baixo). Esse valor deve mudar quando a ethernet é conectada. Alguém sabe como fazer isso?

Eu poderia escrever um script bash para pesquisar cada número X de segundos, mas isso pode consumir mais CPU do que eu gostaria e pode não ser tão limpo quanto uma implementação.

Todas as sugestões são bem vindas. Obrigado!

    
por ChrisVollo 20.04.2017 / 17:34

2 respostas

1

Eventos up / down de Ethernet (e muito mais) são reportados pelo kernel em um soquete netlink. Você assiste as mensagens com ip monitor , que poderiam ser usadas no seu shell script para evitar polling.

Eu também descobri que o Debian tem pelo menos um pacote para netplug , que é um daemon que ouve netlink mensagens e, em seguida, executa um script de shell no link add, up e down. Seu script de shell pode usar systemctl para iniciar / parar suas unidades.

(Presumivelmente, o Network Manager e o systemd-networkd também escutam esses eventos, e provavelmente há uma maneira de ligar um script a eles - mas você não parece estar usando-os.)

    
por 20.04.2017 / 18:45
0

Esta pergunta no ServerFault indica que a solução seria tão simples quanto adicionar uma linha à seção [Install] do seu serviço personalizado:

[Install]
WantedBy=<the appropriate device unit>.device

Se, por outro lado, você quiser que seu serviço seja iniciado quando a conexão de rede do sistema estiver on-line, independentemente do tipo de conexão de rede , consulte man systemd.special e leia as instruções para o uso de network-online.target específico da sua versão do systemd. Para a versão do systemd no meu sistema, o procedimento recomendado é adicioná-lo ao seu serviço:

[Unit]
Wants=network-online.target
After=network-online.target

... mas acho que já vi instruções diferentes para versões diferentes do systemd aqui, portanto, verifique a man systemd.special da sua distribuição primeiro.

    
por 05.05.2018 / 19:05