You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过HTML按钮启动Ubuntu本地Python脚本(Apache环境)

最简单的实现方式

你之前的代码无法工作,因为浏览器的客户端JavaScript没有权限直接执行服务器上的本地脚本——这是浏览器的安全限制,而且onclick里的内容是客户端执行的代码,根本没法触达服务器的文件系统。

最简单的实现是借助Apache的CGI功能,通过服务器端脚本来触发你的Python脚本,步骤如下:

  1. 启用Apache的CGI模块
    打开终端执行:

    sudo a2enmod cgi
    sudo systemctl restart apache2
    
  2. 创建CGI触发脚本
    在Apache默认的CGI目录(/usr/lib/cgi-bin/)下新建一个run_script.py文件,内容如下:

    #!/usr/bin/env python3
    import subprocess
    
    # 必须先输出HTTP响应头,否则浏览器会报错
    print("Content-Type: text/html\n")
    
    # 执行你的目标脚本
    try:
        # 用subprocess运行脚本,捕获输出
        proc = subprocess.run(["/etc/script.py"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
        print("<h3>脚本执行结果</h3>")
        if proc.stdout:
            print(f"<pre>标准输出:\n{proc.stdout}</pre>")
        if proc.stderr:
            print(f"<pre>错误输出:\n{proc.stderr}</pre>")
    except Exception as e:
        print(f"<p>执行出错: {str(e)}</p>")
    
  3. 设置权限
    给CGI脚本加执行权限,并确保Apache的运行用户(www-data)能执行你的目标脚本:

    sudo chmod +x /usr/lib/cgi-bin/run_script.py
    sudo chmod o+x /etc/script.py  # 让其他用户(包括www-data)能执行该脚本
    
  4. 修改HTML按钮
    把原来的按钮改成表单提交,触达CGI脚本:

    <form action="/cgi-bin/run_script.py" method="POST">
        <button type="submit">启动Python脚本</button>
    </form>
    

注意事项

  • 这种方式没有任何权限验证,局域网内所有能访问这个页面的用户都能触发脚本,如果需要限制访问,可以考虑添加Apache的基础认证。
  • 确保/etc/script.py的代码是安全的,避免被恶意利用。

内容的提问来源于stack exchange,提问作者Coder142

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 08:37:43