【问题标题】:Using flask to get the details of a system visiting my website使用烧瓶获取访问我的网站的系统的详细信息
【发布时间】:2017-12-25 06:31:46
【问题描述】:

我已经使用烧瓶(Python 2.7)建立了一个网站。我正在尝试根据该系统的规范将设置文件发送到访问我的网站的系统。因此,我想访问该系统的 cmd 提示符并找到一些东西: 1. 电脑正在使用哪个操作系统和位 2.是否安装了python。

到目前为止,我一直在使用本地主机,所以我的代码看起来还不错。

(这个是检测系统的os)

def index():
    var3 = subprocess.call('uname -o > z2.txt' , shell = True)
    if (var3 == 0):
        return render_template("ch1.html") #ch1 says its ubuntu
    else :
        return render_template("ch2.html") #ch2 says its windows

我之前在其他 Windows 电脑上检查过,它显示的窗口让我觉得我的代码没问题。现在,当我检查 ubuntu 时,它仍然显示窗口。现在我意识到 subprocess.call 在我系统的 cmd 本身而不是在访问我的网站的系统上调用命令。 如何访问访问系统的 cmd 以查找他们的操作系统、位以及是否使用 PYTHON/Flask 在他们的系统上安装了 python。

注意:访问我网站的所有系统都将连接到同一个 wifi(如果有帮助的话)

编辑:从我的网站是否在访问者的系统上安装操作系统、位和 python 是我的主要标准。可以通过访问其他系统的 cmd 或任何其他可能的方式。

【问题讨论】:

  • 这听起来像是 X-Y 问题。你为什么在乎?很可能有更好的方法来完成您想做的事情。
  • 我正在尝试根据客户端系统的规范从我的网站(使用烧瓶制作)向客户端系统发送设置文件。因此,我关心规格。更好的方法如何?拜托,任何帮助都会非常有帮助。
  • 您可能需要为每个您支持的操作系统创建一个安装包,并且只需让安装程序(将在客户端系统上运行)确定安装系统需要做什么。或者,也许您应该将您的应用程序构建为一个操作系统原生包,并将您的运行时依赖项(如 Python)捆绑到您的安装程序中,如果这对您有效的话。

标签: python flask subprocess


【解决方案1】:

您无法从 Web 服务器在客户端计算机上执行命令。否则这将是一个重大的安全问题。

您只能通过Flask请求对象读取其用户代理信息来知道客户端的操作系统名称:http://werkzeug.pocoo.org/docs/0.13/utils/#module-werkzeug.useragents

【讨论】:

  • 谢谢。我编辑了访问 cmd 的那部分。这个链接会给我操作系统。您能否建议一种获取位版本的方法以及系统是否安装了python。
  • 恐怕您无法访问这些信息。
  • 请注意,您甚至无法通过解析User-Agent 标头知道客户端操作系统,因为您无法知道客户端是否在说真话。发送您喜欢的任何标题都很容易,例如curl.
【解决方案2】:

您可以通过 HTTP 请求检查客户端的操作系统,仅此而已。

https://en.wikipedia.org/wiki/User_agent

【讨论】:

    猜你喜欢
    • 2013-11-27
    • 2014-07-24
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 2016-10-20
    • 1970-01-01
    相关资源
    最近更新 更多