通过GET请求在服务器上执行Python命令

时间:2020-06-23 20:59:46

标签: python django linux flask

在我的服务器上,我安装了spleeter,这是一个python应用程序。我能够在终端中成功调用spleeter命令来执行所需的命令。

我希望能够通过http get请求执行那些终端命令。

基本上,我有一个android应用程序,应该向我的vps服务器发出一个Get请求,该服务器执行spleeter命令并返回响应。

请如何创建Get端点。我需要指针。

1 个答案:

答案 0 :(得分:1)

因此,从最简单的意义上讲,您可以创建一个服务于HTTP端点的python网络应用(使用Django,Flask或raw Python等)。在该网络应用中,您可以执行以下操作,根据GET请求的内容在python函数中运行命令:

   import os

   def run_command(command):
      if command = "ls":
         os.system('ls -l')
   ...

这里唯一的问题是,未经身份验证,这是非常不安全的。除非您在Android和/或Python应用中添加了某种身份验证以验证请求,否则任何能够访问Internet的人都可以调用您的端点并运行这些命令。

即使将自定义HTTP标头中的简单“令牌”从应用程序传递到Web服务器,也总比没有任何东西要好,以验证它是发送命令的合法用户。

这里的另一个问题是Python(或Web服务器)用户必须具有运行该命令的权限,这完全是另一个安全问题。

或者,您可以让端点将通过GET请求收到的命令存储到Redis队列中,然后在本地运行一个单独的脚本来验证命令并在系统上运行它们,因此至少您要分离Web部分来自服务器用户部分。

没有更多细节,很难确切地知道您要完成什么。

参考:https://janakiev.com/blog/python-shell-commands/