繁体   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