Aller au contenu

Faire tourner un service Python en continu

Featured Replies

Posté(e)

Bonjour,

Je travaille sur un projet personnel (https://plus.google.com/u/0/communities/117822114732715162346) et j'aurais besoin de votre aide.

Je cherche a faire un zeroconf entre mes clients et mon serveur Synology.

Je pensais mettre un broadcast en python comme par exemple :

#!/usr/bin/python
import socket

UDP_PORT = 50005
MESSAGE = "I am here.."

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#Set the option to say that this socket is for Broacast
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.bind(("0.0.0.0", UDP_PORT))

while True:
  #Listen for Discover requests
  data, addr = sock.recvfrom(1024)
  print("address :" + addr[0])
  #Send the Advertise message
  sock.sendto(MESSAGE, addr)
  print("Message:" + MESSAGE + "Address:" + addr[0])

Comment configurer ce broadcast en service continu (démarrage auto au boot du syno) pour qu'il réponde à mes clients ?

Coté client, j'aurais par exemple ceci :

#!/usr/bin/python
import socket

UDP_IP = "192.168.0.255";
UDP_PORT = 50005;
MESSAGE = "Who is out there.."

#Listen at an predetermined Broadcast Address and port
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM);
sock.bind(("0.0.0.0", UDP_PORT));
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

#send Discover mesage
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
while True:
  #Listen for advertisement
  data, addr = sock.recvfrom(1024)
  print("Node is at:" + addr[0])

Le but est que mes clients récupèrent automatiquement la configuration du serveur Mosquitto du NAS.

Merci d'avance pour votre aide.

  • 2 semaines après...
Posté(e)
  • Auteur

Je réponds à moi-même.

créer un script S99broadcast.sh dans le dossier /usr/local/etc/rc.d/

#!/bin/ash
# Synology DSM bootup script
# Configured Variables:
SCRIPT_EXEC="/volume1/script/broadcast.py"

# Begin script
case "$1" in
start)
   printf "%-30s" "Starting script"
   python ${SCRIPT_EXEC} &
   printf "[%4s]\n" "done"
   ;;
stop)
   printf "%-30s" "Stopping script"
   printf "[%4s]\n" "done"
   ;;
*)
   echo "Usage: $0 {start|stop}"
   exit 1
esac

exit 0

Terminer par un chmod +x S99broadcast.sh pour le rendre exécutable.

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.