加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

将命令从命令行发送到Unix中正在运行的Python脚本

发布时间:2020-12-15 22:14:37 所属栏目:安全 来源:网络整理
导读:我想构建一个可以在从另一个脚本运行时控制的脚本.例如,我想像这样运行我的脚本: ~: Server 并能够运行其中一个功能,如: ~: client func1 在我搜索时,我发现信号模块有我想要的东西,但它的信号是预先定义的,我无法发送自己的信号. 我即使使用网络框架进行
我想构建一个可以在从另一个脚本运行时控制的脚本.例如,我想像这样运行我的脚本:

~: Server &

并能够运行其中一个功能,如:

~: client func1

在我搜索时,我发现信号模块有我想要的东西,但它的信号是预先定义的,我无法发送自己的信号.

我即使使用网络框架进行客户端/服务器实现,但我认为这对于我希望我的脚本具有的功能来说太过分了.

谢谢你们.

解决方法

如果您只是尝试将命令单向发送到服务器,那么使用Python的 Sockets比您想象的要容易.代码示例当然是准确的,因为它们不进行错误处理,并且不调用recv multiple确保消息完整的时间.这只是为了让您了解处理命令所需的代码行数.

这是一个服务器程序,它只接收消息并打印到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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读