web-dev-qa-db-fra.com

service systemd exécuté sur un réseau sans fil

J'ai un serveur qui essaie de se connecter à un point d'accès mobile qui n'est parfois disponible. Cet AP est une caméra avec des images qui doivent être téléchargées de sorte que, dès que le serveur se connecte à cet AP en particulier, j'en ai besoin pour exécuter le script de téléchargement (que j'ai déjà écrit).

Je sais que je pourrais faire des sondages très sales mais y at-il quelque chose comme le pont udev dans systemd? Toutes mes recherches soulèvent des problèmes de réseau très généraux qui ne s’appliquent pas vraiment. C'est le côté scripting des choses qui est la clé ici.

Quelques secondes après la publication de ce message, il se produit que il n'est pas nécessaire que ce soit systemd si nous devons le faire simplement via network-manager (qui gère la connexion wifi), alors qu'il en soit ainsi ... Mais ceci est pour 15h10 avec un objectif de déploiement le 16.04 et je le fais actuellement avec Upstart le 14.04 alors ... J'aime tout ce qui marche mais j'aime aussi être ordonné et bien rangé.

3
Oli

Vous pouvez utiliser un script de répartition Network Manager pour connecter les événements de haut en bas de l'interface.

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

Le script pourrait aller dans ce sens:

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

man networkmanager explique que si un script de répartiteur s'exécute trop longtemps, il est tué à un moment donné. Dans ce cas, il est préférable de créer un autre script pour exécuter la tâche:

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

Network Manager exécute tous les scripts de /etc/NetworkManager/dispatcher.d dans l'ordre alphabétique chaque fois que certains événements sont déclenchés, en transmettant l'interface et l'événement en tant qu'arguments.

$CONNECTION_ID est mis à la disposition du script par le biais de l'environnement. Dans ce cas, il est vérifié que nous sommes connectés au bon profil de connexion, comme indiqué par man networkprofile (je ne sais pas exactement quelles en sont les implications. Dans mon cas, cela fonctionne bien si je vérifie $CONNECTION_ID par rapport à mon SSID, mais je ne suis pas sûr de ce qui se produira si cela correspond au nom d’un autre profil de connexion câblé).

2
kos