【发布时间】: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