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:

  • Senden von Dateien zwischen Client-Server über TCP-Sockel in Python?
  • SQLite über ein Netzwerk
  • Zwei Clients verbinden sich nicht erfolgreich mit dem Server
  • Handle mehrere Steckdosenverbindungen
  • Wie kann ich einen Server mit mehr als einem Client gleichzeitig kommunizieren?
  • PYRO4 - Errno 10061 Verbindung abgelehnt
  •  ~: 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.

  • Python: 12 Bit gepacktes Binärbild lesen
  • Wie schreibe ich Binär- und Asci-Daten in eine Datei in Python?
  • Wie kann ich binäre Postdaten über HTTP senden?
  • Schreiben Sie eine "String" als rohe Binärdatei in eine Datei Python
  • Wie kann ich feststellen, ob eine Datei binär ist (non-text) in python?
  • Wo kann ich binäre Eier mit psycopg2 für Windows herunterladen?
  • 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.