Aller au contenu

Faire tourner un service Python en continu


Messages recommandés

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.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

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.

Lien vers le commentaire
Partager sur d’autres sites

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…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

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.