systemd serviço executado em conexão de rede sem fio

3

Eu tenho um servidor que tenta se conectar a um AP móvel que às vezes só está disponível. Este AP é uma câmera com imagens que precisam ser baixadas, assim que o segundo servidor se conecta a este AP em particular, eu preciso que ele execute o script de download (que eu já escrevi).

Eu sei que eu poderia fazer algumas sondagens muito sujas, mas há algo como a ponte udev no systemd? Toda a minha pesquisa está trazendo coisas de rede muito gerais que não se aplicam. É o lado das coisas que é fundamental aqui.

Segundos após postar isso ocorre que não precisa ser systemd se tivermos que fazer isso apenas via network-manager (que está gerenciando a conexão wifi) então seremos isso ... Mas isso é para 15.10, com vista a implantar em 16.04 e atualmente faço isso com Upstart em 14.04, então ... Eu gosto do que funciona, mas também gosto de puro e arrumado.

    
por Oli 30.01.2016 / 22:53

1 resposta

2

Você pode usar um script de dispatcher do Network Manager para conectar-se aos eventos de subida e descida da interface.

sudo touch /etc/NetworkManager/dispatcher.d/00do_stuff
sudo chmod u+x /etc/NetworkManager/dispatcher.d/00do_stuff

O script pode ser algo assim:

#!/bin/sh
if [  = wlp3s0f0 -a  = up -a $CONNECTION_ID = wlan ]; then
    # do stuff
fi

man networkmanager explica que, se um script dispatcher for executado por muito tempo, o script será eliminado em algum momento, portanto, se essa for uma possibilidade, é melhor usar outro script para executar a tarefa:

#!/bin/sh
if [  = wlp3s0f0 -a  = up -a $CONNECTION_ID = wlan ]; then
    (/home/user/scripts/do_stuff.sh) & disown
fi

O Network Manager executa todos os scripts em /etc/NetworkManager/dispatcher.d em ordem alfabética cada vez que determinados eventos são acionados, passando a interface e o evento como argumentos.

$CONNECTION_ID é disponibilizado para o script pelo ambiente e, neste caso, é verificado se estamos conectados ao usando o perfil de conexão correto, conforme relatado por man networkprofile (não tenho certeza sobre quais implicações isso tem No meu caso, funciona bem se eu verificar $CONNECTION_ID no meu SSID, mas não tenho certeza do que aconteceria se isso coincidisse com o nome de outro perfil de conexão com fio).

    
por kos 31.01.2016 / 00:40