[Résolu] Script python et ifup

Bonjour,

Je suis novice en script Python, mais je suis tout de même parvenu à réaliser un script qui émet des requêtes ARP pour tester la disponibilité d’une passerelle sur une interface.
Le but est, s’il y a des arp reply , de faire un “ip route add” et s’il n’y a pas d’arp reply de faire un “ip route del” (afin d’utiliser une seconde route avec une plus grosse metric).

Lancé dans une terminal, le script marche parfaitement.
Je souhaiterai à présent l’intégrer dans /etc/network/interfaces, pour qu’il s’exécute à la montée de l’interface, en faisant quelque chose du genre “up /usr/bin/python monscript.py”.

En réalisant ifup de mon interface, celle-ci se monte bien et le scripte est lancé (2x fois d’ailleurs, dans “ps aux” il apparaît avec “/bin/sh” et aussi avec “python”).
Le soucis est que je ne retrouve pas le prompt une fois lancé. Même ctrl+c ne fait rien, obligé de faire un kill du process.
J’ai tenté de le lancer en arrière plan en ajoutant “&” puis avec “nohup” mais le “&” est mal interprété dans le fichier /etc/network/interfaces.

Auriez-vous une solution à m’apporter pour que mon script se lance en arrière plan ?
Merci de votre aide.

Après avoir parcouru beaucoup de topics bien compliqués, j’ai fini par trouver un bout de code simplifié qui fonctionne à merveille.
J’avoue ne pas tout comprendre, étant novice.
Il m’a suffit d’ajouter cette partie juste avant mon script:

def become_daemon():
    pid = os.fork ()
    if pid != 0:     # if pid is not child...
        sys.exit(0)

    os.setsid()      # Create new session and sets process group.
    pid = os.fork () # Will have INIT (pid 1) as parent process...
    if pid != 0:     # if pid is not child...
        sys.exit(0)

become_daemon()

ajouté “>/dev/null 2>&1” derrière ma commande dans le fichier /etc/network/interfaces pour que tout se fasse vraiment en arrière plan !

Bonjour lobo

Je me suis permis de modifier la présentation de ton script python dans ton dernier message.

En cliquant, en bas de ton message, sur l’icône représentant un crayon,
tu pourra voir le texte brut que j’ai entré.


J’ai fait précéder le bloc de lignes de ton script
d’une ligne vide
suivie d’une ligne ne contenant que :

```python

et, à la fin du bloc de lignes de ton script,
j’ai ajouté une ligne ne contenant que :

Ce qui fait que ton script apparaît maintenant avec une coloration syntaxique
qui correspondant au langage **python**