[英]Send commands from command line to a running Python script in Unix
我想構建一個可以從其他腳本運行時可以控制的腳本。 例如,我想這樣運行我的腳本:
~: Server &
並能夠運行以下功能之一:
~: client func1
在搜索后,我發現信號模塊具有我想要的東西,但是它的信號是預定義的,因此無法發送自己的信號。
即使使用網絡框架實現客戶端/服務器實現,但對於我希望腳本具有的功能來說,我認為這太多了。
謝謝你們。
如果您只是嘗試向服務器單向發送命令,那么使用Python的Sockets會 比您想象的要容易 。 在不執行錯誤處理和不多次調用recv
以確保消息完整的意義上,這些代碼示例當然是准系統。 這只是讓您了解處理命令需要幾行代碼。
這是一個服務器程序,它僅接收消息並打印到stdout
。 請注意,我們使用線程,以便服務器可以一次偵聽多個客戶端。
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.start()
這是一個向其發送命令的客戶端程序。
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)
因此,您需要與正在運行的進程進行對話嗎? Unix域套接字的想法呢?
在您的服務器中,您可以在UNIX文件系統的路徑上建立一個套接字,然后與客戶端中的該套接字進行通信,如我在Google搜索的鏈接中所述:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.