【问题标题】:Passing data between 2 endless loops in python在python中的2个无限循环之间传递数据
【发布时间】:2021-06-20 03:36:15
【问题描述】:

我正在使用一个使用 cmdloop 并从命令行获取输入的 python 脚本:

import cmd


class SuperC2(cmd.Cmd):
    def default(self, line):
        f = open("command.txt", "w")
        f.write(line)
        f.close()


if __name__ == '__main__':
    SuperC2().cmdloop('Shell')

另一个脚本使用烧瓶并读取 command.txt 文件并将其(通过 GET 请求)提供给客户端。它还侦听执行此命令并发布输出的客户端的 POST:

from flask import Flask
from flask import request

app = Flask(__name__)


@app.route('/command')
def command():
    str = open('command.txt', 'r').read()
    return str

@app.route('/result', methods = ['POST'])
def result():

    if request.method == 'POST':
        data = request.form
        print(data["command"])
        print(data["output"])
    return "ok"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)

我真正想要实现的是拥有 1 个同时运行烧瓶应用程序和 cmdloop 的脚本,只有 cmdloop 显示命令和结果(它来自烧瓶 POST)。有人可以举例说明如何做到这一点吗?我猜是进程队列还是管道?

【问题讨论】:

  • 您可以在另一个线程中运行 Flask 应用程序并在主线程中运行命令循环,但这会有点麻烦,因为无法中断 cmdloop() 中的 input() 到例如实时打印新数据,仍然有提示。

标签: python flask multiprocessing


【解决方案1】:

一般来说,在两个脚本/线程/你有什么之间传输数据的最简单方法是使用来自socket 库的套接字。只需让一个脚本/线程托管绑定到 127.0.0.1 的服务器并从另一个进程连接到它!

【讨论】:

    猜你喜欢
    • 2022-01-05
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2013-10-12
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多