如何通过HTML按钮启动Ubuntu本地Python脚本(Apache环境)
最简单的实现方式
你之前的代码无法工作,因为浏览器的客户端JavaScript没有权限直接执行服务器上的本地脚本——这是浏览器的安全限制,而且onclick里的内容是客户端执行的代码,根本没法触达服务器的文件系统。
最简单的实现是借助Apache的CGI功能,通过服务器端脚本来触发你的Python脚本,步骤如下:
启用Apache的CGI模块
打开终端执行:sudo a2enmod cgi sudo systemctl restart apache2创建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>")设置权限
给CGI脚本加执行权限,并确保Apache的运行用户(www-data)能执行你的目标脚本:sudo chmod +x /usr/lib/cgi-bin/run_script.py sudo chmod o+x /etc/script.py # 让其他用户(包括www-data)能执行该脚本修改HTML按钮
把原来的按钮改成表单提交,触达CGI脚本:<form action="/cgi-bin/run_script.py" method="POST"> <button type="submit">启动Python脚本</button> </form>
注意事项
- 这种方式没有任何权限验证,局域网内所有能访问这个页面的用户都能触发脚本,如果需要限制访问,可以考虑添加Apache的基础认证。
- 确保
/etc/script.py的代码是安全的,避免被恶意利用。
内容的提问来源于stack exchange,提问作者Coder142
相关产品推荐
相关产品推荐

