Senden Sie Befehle von der Befehlszeile zu einem laufenden Python-Skript in Unix

Ich möchte ein Skript erstellen, das beim Laufen von anderen Skripten gesteuert werden kann. Zum Beispiel möchte ich mein Skript so ausführen:

~: Server & 

Und in der Lage sein, eine seiner Funktionen wie:

  • SQLite über ein Netzwerk
  • Ist es OK, asynchrone Benachrichtigungen vom Server zum Client über dieselbe TCP-Verbindung zu senden?
  • Ist es möglich, Pakete über verschiedene Steckdosen zu senden und zu empfangen?
  • PYRO4 - Errno 10061 Verbindung abgelehnt
  • Senden von Dateien zwischen Client-Server über TCP-Sockel in Python?
  • Ist es möglich, Tornados Gen.engine und Gen.Task mit verdrehten zu verwenden?
  •  ~: client func1 

    Bei meinen Recherchen finde ich Signalmodul, das so etwas wie ich will, aber es sind Signale vordefiniert und ich kann keine Signale von mir selbst senden.

    Ich habe zwar eine Client / Server-Implementierung mit einem Netzwerk-Framework, aber ich denke, es ist zu viel für die Fähigkeiten, die ich mein Skript haben möchte.

    Danke euch allen.

  • Konvertieren in Binär und führen führende Nullen in Python
  • Python, Pairwise 'Distanz', brauchen einen schnellen Weg, es zu tun
  • Python: Suchen / Lesen von Binärdaten
  • Python-Binärdatei Leseproblem
  • HTTP-POST-Binärdateien mit Python: prägnante Non-Pycurl-Beispiele?
  • Python OpenCV konvertiert Bild zu Byte String?
  • 2 Solutions collect form web for “Senden Sie Befehle von der Befehlszeile zu einem laufenden Python-Skript in Unix”

    Wenn Sie nur versuchen, Befehle ein-Richtung zu einem Server zu senden, ist es einfacher als Sie denken , mit Python's Sockets . Die Code-Samples sind natürlich Barebones in dem Sinne, dass sie keine Fehlerbehandlung durchführen und nicht mehrmals recv , um sicherzustellen, dass die Nachricht vollständig ist. Dies ist nur, um Ihnen eine Vorstellung davon, wie wenige Zeilen Code benötigt, um Befehle zu verarbeiten.

    Hier ist ein Server-Programm, das einfach Nachrichten und Drucke an stdout empfängt. Beachten Sie, dass wir Threading verwenden, damit der Server mehrere Clients gleichzeitig anhören kann.

     import socket from threading import Thread MAX_LENGTH = 4096 def handle(clientsocket): while 1: buf = clientsocket.recv(MAX_LENGTH) if buf == '': return #client terminated connection print buf serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) PORT = 10000 HOST = '127.0.0.1' serversocket.bind((HOST, PORT)) serversocket.listen(10) while 1: #accept connections from outside (clientsocket, address) = serversocket.accept() ct = Thread(target=handle, args=(clientsocket,)) ct.run() 

    Hier ist ein Client-Programm, das Befehle ansendet.

     import socket import sys HOST = '127.0.0.1' PORT = 10000 s = socket.socket() s.connect((HOST, PORT)) while 1: msg = raw_input("Command To Send: ") if msg == "close": s.close() sys.exit(0) s.send(msg) 

    Also musst du mit einem laufenden prozess reden Was ist mit der Idee von Unix Domain Socket?

    In deinem Server kannst du einen Sockel auf einem Pfad deines Unix-Dateisystems aufbauen und dann mit diesem Socket in deinem Client sprechen, wie in diesem Link beschrieben, den ich gegoogelt habe:

    http://pymotw.com/2/socket/uds.html

    Python ist die beste Programmiersprache der Welt.