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:

  • Ist es möglich, Pakete über verschiedene Steckdosen zu senden und zu empfangen?
  • Senden von Dateien zwischen Client-Server über TCP-Sockel in Python?
  • Zwei Clients verbinden sich nicht erfolgreich mit dem Server
  • Senden von Datei vom Server zum Client (python)
  • Handle mehrere Steckdosenverbindungen
  • Ist es OK, asynchrone Benachrichtigungen vom Server zum Client über dieselbe TCP-Verbindung zu senden?
  •  ~: 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 Sie die binäre Stringdarstellung eines Bytes in den aktuellen Binärwert in Python
  • Wie lese ich Bits aus einer Datei?
  • Ausdünnende Konturlinien in einem binären Bild
  • Regularer Ausdruck, der eine Binärdatei analysiert?
  • Python OpenCV konvertiert Bild zu Byte String?
  • Holen Sie sich den ROI von zwei Binärbildern und finden Sie den Unterschied der mittleren Bild-Intesitäten zwischen 2 ROI in Python
  • 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.