python子进程API的一个最简restapi包装器。

Flask-Shell2HTT的Python项目详细描述


烧瓶-Shell2HTTP

CodeFactorLanguage grade: Pythonflask-shell2http on pypi

{a4{python包装器作为一个最小的HTTP/API扩展。在

  • 将任何命令行工具转换为REST API服务。
  • 通过flask的端点,使用动态参数、文件上传、回调函数功能,异步、安全地执行预定义的shell命令。在
  • 为二进制到二进制/HTTP通信、开发、原型设计、远程控制和more而设计。在

用例

  • 将在成功的POST请求上运行的脚本设置为您选择的端点。见Example code。在
  • 将基本命令映射到端点并向其传递动态参数。见Example code。在
  • 也可以在一个命令中处理多个上载的文件。见Example code。在
  • 如果在微型容器中分布了不同的二进制文件,这对于内部docker-to-docker通信非常有用。见real-life example。在
  • 您可以定义回调函数/使用信号来侦听进程完成情况。见Example code
    • 可能需要向回调函数传递一些额外的上下文?在
    • 可能在完成时截取并更新结果?见Example code
  • 您还可以将View Decorators应用于公开的端点。见Example code
  • 目前,所有命令都是异步运行的(默认超时为3600秒),所以结果不能直接获得。在将来的版本中,可能会为立即返回的命令提供一个选项。在

Note: This extension is primarily meant for executing long-running shell commands/scripts (like nmap, code-analysis' tools) in background from an HTTP request and getting the result at a later time.

文件

Documentation Status

阅读Quickstartdocumentation开始!在

我强烈推荐Examples部分。在

快速入门

依赖性
安装
$ pip install flask flask_shell2http
示例程序

创建一个名为app.py的文件。在

^{pr2}$

使用$ flask run -p 4000运行应用程序服务器。在

通过<;10行代码,我们成功地将shell命令echo映射到端点/commands/saythis。在

进行HTTP调用

本节演示如何通过HTTP调用/执行刚刚在上面的example中映射的命令。在

$ curl -X POST -H 'Content-Type: application/json' -d '{"args": ["Hello", "World!"]}' http://localhost:4000/commands/saythis
或使用python的requests模块,
# You can also add a timeout if you want, default value is 3600 secondsdata={"args":["Hello","World!"],"timeout":60}resp=requests.post("http://localhost:4000/commands/saythis",json=data)print("Result:",resp.json())

Note: You can see the JSON schema for the POST request here.

返回JSON

{"key":"ddbe0a94","result_url":"http://localhost:4000/commands/saythis?key=ddbe0a94","status":"running"}

然后使用这个key可以查询结果,或者直接转到result_url

$ curl http://localhost:4000/commands/saythis?key=ddbe0a94

返回JSON格式的结果

{"report":"Hello World!\n","key":"ddbe0a94","start_time":1593019807.7754705,"end_time":1593019807.782958,"process_time":0.00748753547668457,"returncode":0,"error":null,}

灵感

它最初是为了方便地与Intel Owl集成各种命令行工具,我正在将其作为googlesummer of Code的一部分进行开发。在

这个名字的灵感来自于msoap/shell2http的那些了不起的人。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JFrame中的Java多线程   java Servlet异常映射   java无法从输出流读取   swing Java带来的小程序GUI问题   java什么原因导致错误“'void'类型此处不允许”以及如何修复它?   Java选择器select(长)与selectNow的区别   java自定义arraylist<mygames>获得不同   java Icepdf注释让页面消失   java反向整数数组   java I在生成同步“无法解析配置的所有依赖项”时遇到此错误:app:debugRuntimeClasspath   多个虚拟机上的java线程访问单个DB实例上的表,有时会导致性能低下和异常   swing更改Java中的默认按钮,使其看起来“更好”   java慢速MQ主题订阅。并行化不能提高性能   java运行Boggle Solver需要一个多小时。我的代码怎么了?   数据库中的java循环与应用程序中的java循环   正则表达式匹配${123…456}并在Java中提取2个数字?   java如何制作我们软件的试用版   Java内存参数计算   从另一个类调用方法时出现java问题