J'utilise Debian 7 Wheezy et j'ai besoin de démarrer certains écrans au démarrage dès qu'il y a une connexion Internet entièrement fonctionnelle. Cependant, non, si la connexion Internet est rompue et est à nouveau connectée. Donc, uniquement sur la première connexion Internet fonctionnelle après le démarrage.
Pourriez-vous s'il vous plaît poster un script factice pour cela et me dire où le mettre et le faire exécuter dans les conditions données?
Le script n'a besoin que de démarrer l'écran puis de se terminer mais l'écran doit continuer.
EDIT
J'ai déjà entendu parler du /etc/network/if-up.d/
dossier. Mais comment puis-je m'assurer que le script n'est pas exécuté à nouveau si la connexion Internet est perdue puis rétablie?
debian
networking
startup
MinecraftShamrock
la source
la source
Réponses:
Mettez votre script
/etc/network/if-up.d
et rendez-le exécutable. Il sera exécuté automatiquement chaque fois qu'une interface réseau apparaîtra.Pour le faire fonctionner uniquement la première fois qu'il est exécuté à chaque démarrage, demandez-lui de vérifier l'existence d'un fichier indicateur que vous créez après la première fois. Exemple:
la source
/var/run
est un système de fichiers volatile (atmpfs
). Il est donc garanti de se retrouver vide à chaque nouveau démarrage.python -c 'import os; os.open("/var/run/work-was-already-done", os.O_EXCL|os.O_CREAT, 0)' 2>/dev/null || exit 0
IFACE
n'est pas le caslo
- ou une interface virtuelle - ou mieux, testez la connectivité Internet en exécutant une commande ping.$IFACE
peut avoir comme valeurs n'importe quelle interface qui apparaît. Vous pouvez répertorier toutes les interfaces qui existent avecip link
ou regarder celles qui sont configurées pour être mises en place par numérisation/etc/network/interfaces
C'est un travail très bien adapté
systemd
.Exécution d'un script en tant que service systemd
Si votre système exécute systemd , vous pouvez configurer votre script pour qu'il s'exécute en tant que service systemd qui permet de contrôler le cycle de vie et l'environnement d'exécution, ainsi que les conditions préalables au démarrage du script, telles que le réseau en cours d'exécution.
Le dossier recommandé pour vos propres services est
/etc/systemd/system/
(une autre option est/lib/systemd/system
mais qui devrait normalement être utilisée pour les services OOTB uniquement).Créez le fichier par exemple avec
sudo vim /etc/systemd/system/autossh.service
:Vous pouvez maintenant tester le service:
Vérification de l'état du service:
Arrêt du service:
Une fois que vous avez vérifié que le service fonctionne comme prévu, activez-le avec:
la source
La connexion Internet est évoquée par une entrée dans
/etc/rc6.d/
probablementS35networking
. Si vous modifiez ce fichier et insérez vos commandes à la fin, ou mieux ajoutez un/etc/init.d/mystuff
lien/etc/rc0.d/S36mystuff
vers celui-ci et insérez-y vos commandes, alors cela démarrera dès que le réseau sera en place.la source
/etc/network/if-up.d
/etc/rc0.d
ne sera exécuté au démarrage, ceux-ci s'exécuteront à l'arrêt (niveau d'exécution 0). Au démarrage, ce serait quelque chose/etc/rc2.d
ou similaire. Spécifiquement pour le sifflement Debian de l'OP, c'est/etc/rcS.d/S12networking
. Bien sûr, tous les liens symboliques vers le même fichier. BTW @Anthon aussi merci d'avoir corrigé ma réponse: "S'il vous plaît" au lieu de "Mettre"? Quelle coquine bizarre!if-up.d
comme mécanisme générique qui fonctionne également sur une reconnexion.