Script python en service

Forum dédié aux questions concernant la configuration de votre serveur sous Linux
xavierlp
Messages : 220
Inscription : 01 nov. 2016, 15:28

Script python en service

Message par xavierlp »

Bonjour à tous.

Je viens de suivre le tuto sur la detection des beacons et cela fonctionne très bien.

Cependant je bute sur la mise en place du service :

J'ai donc créé le fichier check_beacon_presence.service de cette façon

Code : Tout sélectionner

Description=check_beacon_presence Service
After=multi-user.target

[Service]
User=root
Type=idle
ExecStart=python /usr/local/bin/check_beacon_presence.py

[Install]
WantedBy=multi-user.target
J'ai ensuite activé le service

Code : Tout sélectionner

 sudo systemctl enable  check_beacon_presence.service
Puis démarré ce même service

Code : Tout sélectionner

 sudo systemctl start check_beacon_presence.service
Et verifier que tout fonctionne

Code : Tout sélectionner

pi@raspberrypi4:~ $ sudo systemctl status check_beacon_presence.service -l
● check_beacon_presence.service
   Loaded: loaded (/etc/systemd/system/check_beacon_presence.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-04-18 19:30:22 CEST; 1min 7s ago
 Main PID: 7213 (python)
    Tasks: 2 (limit: 3911)
   Memory: 12.0M
   CGroup: /system.slice/check_beacon_presence.service
           └─7213 /usr/bin/python /usr/local/bin/check_beacon_presence.py

avril 18 19:30:22 raspberrypi4 systemd[1]: Started check_beacon_presence.service.
avril 18 19:30:22 raspberrypi4 sudo[7219]:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/bin/hciconfig hci1 down
avril 18 19:30:22 raspberrypi4 sudo[7219]: pam_unix(sudo:session): session opened for user root by (uid=0)
avril 18 19:30:22 raspberrypi4 sudo[7219]: pam_unix(sudo:session): session closed for user root
avril 18 19:30:22 raspberrypi4 sudo[7229]:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/bin/hciconfig hci1 up
avril 18 19:30:22 raspberrypi4 sudo[7229]: pam_unix(sudo:session): session opened for user root by (uid=0)
avril 18 19:30:22 raspberrypi4 sudo[7229]: pam_unix(sudo:session): session closed for user root
avril 18 19:30:22 raspberrypi4 sudo[7239]:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/bin/hciconfig
avril 18 19:30:22 raspberrypi4 sudo[7239]: pam_unix(sudo:session): session opened for user root by (uid=0)
avril 18 19:30:22 raspberrypi4 sudo[7239]: pam_unix(sudo:session): session closed for user root
ensuite je relance le rpi et la meme commande me renvoie ceci

Code : Tout sélectionner

pi@raspberrypi4:~ $ sudo systemctl status check_beacon_presence.service -l
● check_beacon_presence.service
   Loaded: loaded (/etc/systemd/system/check_beacon_presence.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sat 2020-04-18 19:25:09 CEST; 1s ago
  Process: 4777 ExecStart=/usr/bin/python /usr/local/bin/check_beacon_presence.py (code=exited, status=1/FAILURE)
 Main PID: 4777 (code=exited, status=1/FAILURE)

avril 18 19:25:09 raspberrypi4 sudo[4803]: pam_unix(sudo:session): session opened for user root by (uid=0)
avril 18 19:25:09 raspberrypi4 sudo[4803]: pam_unix(sudo:session): session closed for user root
avril 18 19:25:09 raspberrypi4 python[4777]: Traceback (most recent call last):
avril 18 19:25:09 raspberrypi4 python[4777]:   File "/usr/local/bin/check_beacon_presence.py", line 182, in <module>
avril 18 19:25:09 raspberrypi4 python[4777]:     hci_toggle_le_scan(sock, 0x01)
avril 18 19:25:09 raspberrypi4 python[4777]:   File "/usr/local/bin/check_beacon_presence.py", line 102, in hci_toggle_le_scan
avril 18 19:25:09 raspberrypi4 python[4777]:     bluez.hci_send_cmd(sock, OGF_LE_CTL, OCF_LE_SET_SCAN_ENABLE, cmd_pkt)
avril 18 19:25:09 raspberrypi4 python[4777]: _bluetooth.error: (1, 'Operation not permitted')
avril 18 19:25:09 raspberrypi4 systemd[1]: check_beacon_presence.service: Main process exited, code=exited, status=1/FAILURE
avril 18 19:25:09 raspberrypi4 systemd[1]: check_beacon_presence.service: Failed with result 'exit-code'.
Aussi j'ai pensé à ce que ce soit root qui lance le service
Donc j'ai vérifié en ligne de commande de cette façon:

Code : Tout sélectionner

pi@raspberrypi4:~ $ sudo su
root@raspberrypi4:/home/pi# python /usr/local/bin/check_beacon_presence.py
Les beacons sont mis à jour et le fichier de log est bien mis à jour.

Je ne comprends pas pourquoi j’ai cette erreur…
Peut-être ai-je mal compris comment procéder… J’espère avoir été claire dans mes explications et que quelqu’un saura m’aiguiller.

Merci d’avance pour votre aide !

Bonne journée
xavierlp
Messages : 220
Inscription : 01 nov. 2016, 15:28

Re: RESOLU : Script python en service

Message par xavierlp »

En creusant a droite et à gauche j'ai modifié le paramètre After

Je l'ai modifié de user.target à network.target

Je pense en effet que la couche BT doit être up et liée à network.
Pas sur mais en tous cas cela fonctionne avec ce paramètre
Répondre