#!/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 "============================================================"