Files
011-ai-interview/deploy/write_deploy_script.py
2026-01-23 13:57:48 +08:00

112 lines
2.8 KiB
Python

#!/usr/bin/env python3
"""
通过文件 API 写入部署脚本
"""
import requests
import time
import hashlib
import base64
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
BT_PANEL = "http://47.107.172.23:8888"
BT_API_KEY = "PKdfnaInQL0P5ghB8SvwbrGcIpXWaEvq"
DEPLOY_PATH = "/www/wwwroot/ai-interview"
def bt_api(action, data=None, timeout=60):
if data is None:
data = {}
request_time = int(time.time())
request_token = hashlib.md5(
f"{request_time}{hashlib.md5(BT_API_KEY.encode()).hexdigest()}".encode()
).hexdigest()
data['request_time'] = request_time
data['request_token'] = request_token
url = f"{BT_PANEL}/{action}"
try:
response = requests.post(url, data=data, timeout=timeout, verify=False)
try:
return response.json()
except:
return {"status": True, "msg": response.text[:2000]}
except Exception as e:
return {"status": False, "msg": str(e)}
def main():
print("=" * 60)
print("📝 写入部署脚本到服务器")
print("=" * 60)
deploy_script = f"""#!/bin/bash
# AI Interview 部署脚本
cd {DEPLOY_PATH}/deploy
echo "清理 Docker..."
docker system prune -af 2>/dev/null || true
echo "构建并启动..."
docker-compose up -d --build
sleep 15
echo "容器状态:"
docker ps -a
echo "后端日志:"
docker logs --tail 30 ai-interview-backend 2>&1
echo "测试:"
curl -s http://127.0.0.1:8000/health || echo "后端未响应"
"""
# 方法1: 尝试写入已存在的路径
paths_to_try = [
f"{DEPLOY_PATH}/deploy.sh",
f"{DEPLOY_PATH}/deploy/deploy.sh",
"/tmp/deploy.sh",
]
for path in paths_to_try:
print(f"\n尝试写入: {path}")
# 先尝试创建空文件
result = bt_api("files?action=CreateFile", {"path": path})
print(f" 创建文件: {result}")
# 然后写入内容
result = bt_api("files?action=SaveFileBody", {
"path": path,
"data": deploy_script,
"encoding": "utf-8"
})
if result.get("status"):
print(f" ✅ 写入成功!")
print()
print("=" * 60)
print("请在服务器执行:")
print(f" bash {path}")
print("=" * 60)
return
else:
print(f"{result.get('msg', result)}")
print()
print("=" * 60)
print("❌ 所有方法都失败了")
print()
print("请手动在服务器终端执行:")
print()
print(f"cd {DEPLOY_PATH}/deploy")
print("docker system prune -af")
print("docker-compose up -d --build")
print("=" * 60)
if __name__ == "__main__":
main()