非Python开发者:如何在Unix中运行Python脚本及实现HTTP Basic Auth
嘿,我来帮你一步步解决这两个问题:
1. 在Unix系统中运行Python脚本的方法
有两种常用的方式,选哪种都可以:
- 直接执行脚本文件
- 先给脚本添加执行权限:
chmod +x your_script.py(把your_script.py换成你实际的脚本文件名) - 在脚本的第一行加上shebang,告诉系统用哪个Python解释器:
#!/usr/bin/env python3(如果你的系统默认Python是2.x,就换成python,不过更推荐用python3) - 现在直接运行脚本:
./your_script.py
- 先给脚本添加执行权限:
- 用Python命令执行
不需要设置执行权限,直接在终端输入:python3 your_script.py(同样,根据你的Python版本调整为python)
2. 搭建带HTTP Basic Auth的Python应用
看你提到自己不是Python开发者,那我推荐用轻量的Flask框架来实现,步骤超简单:
第一步:安装Flask
在终端运行:pip3 install flask
第二步:编写应用代码
创建一个比如叫auth_app.py的文件,把下面的代码粘进去(记得替换里面的用户名和密码):
from flask import Flask, request, jsonify from functools import wraps app = Flask(__name__) # 定义一个验证HTTP Basic Auth的装饰器,用来保护路由 def requires_auth(f): @wraps(f) def decorated(*args, **kwargs): auth = request.authorization # 这里替换成你自己的用户名和密码 valid_username = "my_user" valid_password = "my_secure_pass" if not auth or auth.username != valid_username or auth.password != valid_password: # 返回401未授权状态码 return jsonify({"message": "请输入正确的账号密码"}), 401 return f(*args, **kwargs) return decorated # 受保护的接口,只有验证通过才能访问 @app.route('/my-protected-api') @requires_auth def protected_api(): return jsonify({"message": "恭喜你,已成功通过身份验证!"}) if __name__ == '__main__': # 启动服务,允许外部访问的话把host改成0.0.0.0 app.run(host='localhost', port=5000)
第三步:运行应用
在终端输入:python3 auth_app.py
第四步:测试验证
你可以用Unix自带的curl命令测试:curl -u my_user:my_secure_pass http://localhost:5000/my-protected-api
或者直接在浏览器访问http://localhost:5000/my-protected-api,浏览器会弹出账号密码输入框,输入正确就能看到返回内容啦。
另外补充一下:你之前贴的requests代码是客户端发送带Basic Auth的请求(比如你的应用需要调用其他需要验证的API时用),如果是这个需求,把代码补全就行:
import requests from requests.auth import HTTPBasicAuth # 替换成目标API地址和你的账号密码 response = requests.get('https://api.github.com/user', auth=HTTPBasicAuth('你的GitHub用户名', '你的GitHub个人访问令牌')) # 打印响应状态码和内容 print("响应状态码:", response.status_code) print("响应内容:", response.json())
内容的提问来源于stack exchange,提问作者menteith
相关产品推荐
相关产品推荐

