簡體   English   中英

將命令從命令行發送到Unix中正在運行的Python腳本

[英]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搜索的鏈接中所述:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM