pierrot10
Posts: 33
Joined: Mon Dec 15, 2014 3:17 pm

Comment lancer un script que le WiFi est UP

Tue Dec 26, 2017 8:15 pm

Bonjour à tous et joyeux Noel

Je me prends le chou depuis plus de deux heures....

J'ai créé un petit script qui va afficher un messahe Welcome sur un écran OLD 128x64. Il doit aussi afficher l'adresse IP du Raspberry
Quand je lance la commande

Code: Select all

sudo python /opt/welcome.py
ca marche bien.

J'aimerais que ce script est exécuté quand le Raspberry boot.

Alors j'ai ajouté cette ligne dans le fichier /etc/rc.local

Code: Select all

python /opt/welcome.py
Ca marche sauf que l'adresse IP n'est pas affichée. Je pense parce que le Raspberry n'est pas encore connecté au Réseau de la maison.

Alors j'ai essayé d'autres solution.
1. Dans le fichier /etc/netwrok/interfaces, j'ai ajouté cette ligne

Code: Select all

post-up /opt/welcome.py
pour qu'il soitt lancé après le WiFi, mais cane marche pas. Est-ce qu'il est lancé avec sudo

J'ai aussi essyé de faire ceci

Code: Select all

sudo ln -s /opt/welcome.py /etc/network/if-up.d/welcome
Le script n'est pas exécuté car il doit être lancé par sudo

J'ai encore essayé de mettre ceci dans mon cron (crontab -e)

Code: Select all

@reboot python  /opt/welcome.py &
Mais rien y fait, ca ne marche pas!
Faut-il des expaces ou des tab entre le mot? Et est-ce qu'il va vraiment être exécuté après la connexion WiFI.

Je vais maintenant regardé comment avoir un listner qui écoute le WiFi mais je ne suis pas convaincu.

Comment je pourrai lancé un script au démarrage, mais après le WifI pour avoir l'adresse IP?

Je vous remercie

pierrot10
Posts: 33
Joined: Mon Dec 15, 2014 3:17 pm

Re: Comment lancer un script que le WiFi est UP

Tue Dec 26, 2017 8:16 pm

Petit détail. Mon script est exécutable:

Code: Select all

[email protected]:~ $ ls -la /opt/
-rwxr-xr-x  1 root root 2156 Dec 26 18:41 welcome.py

pierrot10
Posts: 33
Joined: Mon Dec 15, 2014 3:17 pm

Re: Comment lancer un script que le WiFi est UP

Tue Dec 26, 2017 8:35 pm

J'ai encore essayé d'étder ceci

Code: Select all

sudo nano /etc/xdg/lxsession/LXDE/autostart
et d'ajouter ceci a la fin

Code: Select all

@/usr/bin/sudo /opt/welcome.py
Aussi, j'ai fait attention que mon sycript welcome.py, commence par

Code: Select all

#!/usr/bin/env python
Mais rien y fait, rien n s'affiche sur mon écran! :oops:

totoharibo
Posts: 3972
Joined: Thu Jan 24, 2013 8:43 am

Re: Comment lancer un script que le WiFi est UP

Tue Dec 26, 2017 9:19 pm

avec systemd : créer un service et le lancer après que la liaison soit lancée.
Ça marche bien mais faut faire pas mal de lecture :cry:
une fois qu'on a compris (y a pas mal de didacticiels sur la toile) c'est très puissant quoiqu''en disent certains

Ou alors tester si la liaison est en marche au début de ton programme par un truc du genre (en bash, c'est tout fait)
ping -W 1 -c 1 <ton IP>
dans une boucle while.
ça n'empêche pas de mettre une "&" après ta commande dans rc.local.

pierrot10
Posts: 33
Joined: Mon Dec 15, 2014 3:17 pm

Re: Comment lancer un script que le WiFi est UP

Tue Dec 26, 2017 10:42 pm

Merci!!! J'avais exploré ceci et j'aurais su aller jusqu'au bout.

Voici comment j'ai fait (J'ai pas envire de tout réécrire, alors je past le lien
http://smart-idea.io/raspberry-zero-lor ... d/#service

Pour info: https://www.raspberrypi-spy.co.uk/2015/ ... g-systemd/

Merci!!

totoharibo
Posts: 3972
Joined: Thu Jan 24, 2013 8:43 am

Re: Comment lancer un script que le WiFi est UP

Wed Dec 27, 2017 8:13 am

il y a aussi wanted et needed dans le fichier service

ce qui est intéressant aussi c'est systemctl status <service>
ça permet de voir l'état du service.
et si tu mets des print dans ton programme tu verras le résultat dans le status.
utile pour debugger, ensuite on les enlève.

JumpZero
Posts: 873
Joined: Thu Mar 28, 2013 7:35 pm
Location: 127.0.0.1

Re: Comment lancer un script que le WiFi est UP

Wed Dec 27, 2017 12:34 pm

Bjr,
pierrot10 wrote:
Tue Dec 26, 2017 8:15 pm
Ca marche sauf que l'adresse IP n'est pas affichée. Je pense parce que le Raspberry n'est pas encore connecté au Réseau de la maison.
Oui c'est ca
Depuis Raspbian Jessie et l'apparition de systemd tous les services sont lancés en parallèle, donc /etc/rc.local n'est plus le dernier service a être lancé :( . Et effectivement le réseau n'est pas encore up
Ceci a longement été discuté a l'époque et la fondation a crée une option "wait for network" dans raspi-config
C'est ca la solution...
--
Jmp0

pierrot10
Posts: 33
Joined: Mon Dec 15, 2014 3:17 pm

Re: Comment lancer un script que le WiFi est UP

Thu Dec 28, 2017 7:49 pm

Bonjour ZumpZero

J'avais pas lu ton message. Merci beaucoup pour cet info. En effet, c'est la solution.

J'ai "eésolu mon problème en créant un service comme je l'explique ici
http://smart-idea.io/raspberry-zero-lor ... d/#service

En gros, je créé un fichier

Code: Select all

$ sudo nano /lib/systemd/system/welcome.service
J'ajoute ces ligne

Code: Select all

[Unit]
Description=Launch welcome script which print IP and disk size on OLED
After=multi-user.target

[Service]
Type=idle
ExecStart=/usr/bin/python /opt/welcome.py > /var/log/oled-welcome.log 2>&1
[Install]
WantedBy=multi-user.target
En adaptant bien sûre, le chemin ou est mon script.
Je chnage les droit de mon fichier

Code: Select all

$ sudo chmod 644 /lib/systemd/system/welcome.service
Puis j'active

Code: Select all

$ sudo systemctl daemon-reload
$ sudo systemctl enable welcome.service
Quand je reboot, mon Raspberry, lÎP s'affiche sur mon LCD, mais je pense que ta solution est bien plus intéressant à explorer.

Merci!!

totoharibo
Posts: 3972
Joined: Thu Jan 24, 2013 8:43 am

Re: Comment lancer un script que le WiFi est UP

Fri Dec 29, 2017 9:49 am

systemctl : un status pour voir l'état du service
un restart pour relancer .

À CONFIRMER : je croyais que les services "utilisateur" devaient être dans :
/etc/systemd/system
Je CROIS me rappeler (c'est loin c'est presque de l'année dernière) que lors d'un update ça risquait de sauter.

Enfin chez moi c'est comme ça et ça fonctionne.

mets quelques "printf <tes variables que tu veux voir>" dans ton source.
(man printf comme d'hab)
Ensuite tu consultes avec systemtctl status <ton service>
Tu enlèves les printf à la fin.

pierrot10
Posts: 33
Joined: Mon Dec 15, 2014 3:17 pm

Re: Comment lancer un script que le WiFi est UP

Sun Dec 31, 2017 1:09 am

Hello
Ceci a longement été discuté a l'époque et la fondation a crée une option "wait for network" dans raspi-config
C'est ca la solution...
Je confirme que ca marche bien. Je viens d'essayer
Bonne année!!

Return to “Français”