完成任务16:编写 04_长期发展/环境保护.md

This commit is contained in:
root
2026-05-23 16:51:48 +00:00
parent 33ea0114ea
commit c8cd92ba7c
734 changed files with 188060 additions and 604 deletions

View File

@@ -0,0 +1,78 @@
#!/usr/bin/env python3
"""
列出 MinIO 存储桶中所有对象的公网访问地址
环境变量:
MINIO_ENDPOINT: MinIO 服务地址 (例如: http://192.168.1.1:9000)
MINIO_ACCESS_KEY: 访问密钥
MINIO_SECRET_KEY: 密钥
MINIO_PUBLIC_URL: 公网访问域名 (例如: https://oss.example.com)
"""
import os
from urllib.parse import urlparse, quote
def main():
# 获取环境变量
endpoint = os.environ.get('MINIO_ENDPOINT', '')
access_key = os.environ.get('MINIO_ACCESS_KEY', '')
secret_key = os.environ.get('MINIO_SECRET_KEY', '')
public_url = os.environ.get('MINIO_PUBLIC_URL', '').rstrip('/')
# 检查环境变量是否配置
if not all([endpoint, access_key, secret_key, public_url]):
print("错误: 请确保以下环境变量已配置:")
print(" - MINIO_ENDPOINT")
print(" - MINIO_ACCESS_KEY")
print(" - MINIO_SECRET_KEY")
print(" - MINIO_PUBLIC_URL")
return
# 导入 minio 库
try:
from minio import Minio
except ImportError:
print("错误: 未安装 minio 库,正在安装...")
os.system("pip install minio -q")
from minio import Minio
# 解析 endpoint
parsed = urlparse(endpoint)
host = parsed.netloc
secure = parsed.scheme == 'https'
# 创建客户端
client = Minio(
host,
access_key=access_key,
secret_key=secret_key,
secure=secure
)
# 列出所有桶
buckets = client.list_buckets()
print(f"公共访问地址前缀: {public_url}")
print(f"\n{len(buckets)} 个桶:\n")
total_objects = 0
for bucket in buckets:
objects = list(client.list_objects(bucket.name))
total_objects += len(objects)
if objects:
print(f"{bucket.name}】({len(objects)} 个对象):")
for obj in objects:
# URL 编码对象名,处理中文和特殊字符
encoded_name = quote(obj.object_name, safe='')
url = f"{public_url}/{bucket.name}/{encoded_name}"
print(f" {obj.object_name}")
print(f" -> {url}")
print()
print(f"统计: 共 {len(buckets)} 个桶,{total_objects} 个对象")
if __name__ == "__main__":
main()