Files
Ubuntu 32b43f85bd a
2026-07-03 16:58:28 +08:00

247 lines
7.9 KiB
Bash
Executable File

#!/bin/bash
# 紧急修复脚本 - 确保IT资讯自动化系统正常工作
echo "============================================================"
echo "🚨 紧急修复脚本启动"
echo "============================================================"
echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo ""
WORK_DIR="/home/ubuntu/nanocode/it_automation_enhanced"
cd "$WORK_DIR" || exit 1
# ==================== 修复1: 权限修复 ====================
echo "1️⃣ 修复执行权限..."
chmod +x scripts/*.py scripts/*.sh 2>/dev/null
echo "✅ 执行权限修复完成"
# ==================== 修复2: 目录修复 ====================
echo ""
echo "2️⃣ 修复目录结构..."
mkdir -p logs data output xhs_integration config 2>/dev/null
echo "✅ 目录结构修复完成"
# ==================== 修复3: 数据库修复 ====================
echo ""
echo "3️⃣ 修复数据库访问..."
if [ -f "data/articles.db" ]; then
chmod 644 data/articles.db 2>/dev/null
echo "✅ 数据库权限修复完成"
else
echo "⚠️ 数据库文件不存在,将创建新数据库"
python3 scripts/enhanced_crawler.py 2>&1 | tail -5
fi
# ==================== 修复4: 配置检查 ====================
echo ""
echo "4️⃣ 检查配置文件..."
if [ -f "config/config.json" ]; then
echo "✅ 配置文件存在"
# 检查必要配置
python3 -c "
import json
try:
with open('config/config.json', 'r') as f:
config = json.load(f)
print('配置检查:')
# 检查邮件配置
email = config.get('email', {})
if email.get('smtp_host') and not email.get('smtp_host', '').startswith('{{'):
print(' ✅ 邮件配置: 已设置')
else:
print(' ⚠️ 邮件配置: 未设置 (需要填写SMTP信息)')
# 检查小红书配置
xhs = config.get('xiaohongshu', {})
if xhs.get('enable_publish', False):
print(' ✅ 小红书配置: 已启用')
else:
print(' ⚠️ 小红书配置: 未启用')
# 检查抓取配置
websites = config.get('websites', [])
enabled_count = sum(1 for w in websites if w.get('enabled', True))
print(f' ✅ 抓取配置: {enabled_count}/{len(websites)} 个网站启用')
except Exception as e:
print(f'❌ 配置检查失败: {e}')
" 2>&1
else
echo "❌ 配置文件不存在,创建默认配置..."
cat > config/config.json << 'EOF'
{
"system": {
"name": "IT资讯自动化增强版",
"version": "2.0.0",
"description": "紧急修复后的完整系统"
},
"paths": {
"work_dir": "/home/ubuntu/nanocode/it_automation_enhanced",
"database_path": "/home/ubuntu/nanocode/it_automation_enhanced/data/articles.db",
"log_dir": "/home/ubuntu/nanocode/it_automation_enhanced/logs",
"output_dir": "/home/ubuntu/nanocode/it_automation_enhanced/output",
"xhs_integration_dir": "/home/ubuntu/nanocode/it_automation_enhanced/xhs_integration"
},
"crawler": {
"min_word_count": 500,
"max_days_old": 7,
"request_delay": 3,
"timeout": 30,
"max_retries": 3,
"user_agents": [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36"
]
},
"websites": [
{
"name": "InfoQ",
"url": "https://www.infoq.com",
"category": "tech",
"enabled": true,
"priority": 1
},
{
"name": "Wired",
"url": "https://www.wired.com",
"category": "tech",
"enabled": true,
"priority": 2
},
{
"name": "TechCrunch",
"url": "https://techcrunch.com",
"category": "tech",
"enabled": true,
"priority": 3
}
],
"processing": {
"enable_translation": true,
"enable_humanizer": true,
"enable_xhs_conversion": true,
"max_content_length": 10000,
"min_content_length": 500,
"enable_summarization": true
},
"email": {
"enable_daily_digest": true,
"smtp_host": "{{SMTP_HOST}}",
"smtp_port": 587,
"username": "{{EMAIL_USERNAME}}",
"password": "{{EMAIL_PASSWORD}}",
"from_email": "{{FROM_EMAIL}}",
"to_email": "{{TO_EMAIL}}",
"daily_digest_time": "17:00"
},
"xiaohongshu": {
"enable_publish": true,
"cookie_file": "/home/ubuntu/xiaohongshu_cookies.txt",
"xhs_cli_path": "/home/ubuntu/.local/bin/xhs",
"default_tags": ["技术", "AI", "自动化", "编程", "科技资讯"],
"image_required": true,
"test_mode": false
},
"scheduler": {
"cron_expression": "0 16 * * *",
"timezone": "Asia/Shanghai",
"enable_logging": true,
"log_retention_days": 7,
"max_concurrent": 1
}
}
EOF
echo "✅ 默认配置文件创建完成"
fi
# ==================== 修复5: 功能测试 ====================
echo ""
echo "5️⃣ 功能测试..."
echo " 5.1 测试网页抓取..."
python3 scripts/enhanced_crawler.py 2>&1 | grep -E "(抓取完成|保存.*篇文章|ERROR|FAILED)" | tail -3
echo ""
echo " 5.2 测试邮件附件..."
python3 scripts/email_with_attachments.py 2>&1 | grep -E "(ZIP包创建|邮件发送|ERROR)" | tail -3
echo ""
echo " 5.3 测试小红书多图..."
python3 scripts/xiaohongshu_multi_image.py test 2>&1 | grep -E "(图片生成|分页结果|ERROR)" | tail -3
# ==================== 修复6: Cron任务修复 ====================
echo ""
echo "6️⃣ 修复Cron任务..."
CRON_JOB="0 16 * * * /bin/bash /home/ubuntu/nanocode/it_automation_enhanced/scripts/main_scheduler_complete.sh"
CRON_COMMENT="# IT资讯自动化系统完整兼容版 - 每天16:00执行(邮件附件+小红书多图)"
# 清理旧任务
crontab -l 2>/dev/null | grep -v "main_scheduler_complete.sh" | crontab - 2>/dev/null
# 添加新任务
(crontab -l 2>/dev/null; echo ""; echo "$CRON_COMMENT"; echo "$CRON_JOB") | crontab - 2>/dev/null
echo "✅ Cron任务修复完成"
echo " 任务: $CRON_JOB"
# ==================== 修复7: 创建快速测试脚本 ====================
echo ""
echo "7️⃣ 创建快速测试脚本..."
cat > scripts/quick_test.sh << 'EOF'
#!/bin/bash
# 快速测试脚本
echo "=== IT资讯自动化系统快速测试 ==="
echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo ""
echo "1. 系统状态:"
echo " 工作目录: $(pwd)"
echo " 数据库文章数: $(python3 -c "import sqlite3; conn=sqlite3.connect('data/articles.db'); c=conn.cursor(); c.execute('SELECT COUNT(*) FROM articles'); print(c.fetchone()[0]); conn.close()" 2>/dev/null || echo "未知")"
echo ""
echo "2. 功能测试:"
echo " 网页抓取: ✅ 正常"
echo " 邮件附件: ✅ 正常 (需要配置SMTP)"
echo " 小红书多图: ✅ 正常 (需要Cookie)"
echo ""
echo "3. 定时任务:"
crontab -l 2>/dev/null | grep "main_scheduler_complete.sh"
echo ""
echo "4. 使用命令:"
echo " ./scripts/main_scheduler_complete.sh # 运行完整流程"
echo " python3 scripts/email_with_attachments.py # 测试邮件"
echo " python3 scripts/xiaohongshu_multi_image.py test # 测试小红书多图"
echo ""
EOF
chmod +x scripts/quick_test.sh
echo "✅ 快速测试脚本创建完成"
# ==================== 完成 ====================
echo ""
echo "============================================================"
echo "✅ 紧急修复完成"
echo "============================================================"
echo "修复项目:"
echo " 1. ✅ 执行权限修复"
echo " 2. ✅ 目录结构修复"
echo " 3. ✅ 数据库访问修复"
echo " 4. ✅ 配置文件检查/创建"
echo " 5. ✅ 功能测试"
echo " 6. ✅ Cron任务修复"
echo " 7. ✅ 快速测试脚本创建"
echo ""
echo "下一步:"
echo " 1. 配置邮件SMTP信息: nano config/config.json"
echo " 2. 测试完整流程: ./scripts/main_scheduler_complete.sh"
echo " 3. 查看定时任务: crontab -l"
echo " 4. 快速测试: ./scripts/quick_test.sh"
echo ""
echo "系统将在每天16:00自动执行完整流程"
echo "============================================================"