#!/bin/bash # 测试crontab配置脚本 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" || exit 1 echo "==========================================" echo "超星数据同步定时任务配置测试" echo "==========================================" echo "" # 测试1: 检查文件是否存在 echo "测试1: 检查必要文件..." files=("run_script.sh" "crontab_config.txt" "请求系部信息API.py" "请求专业信息API.py" "请求班级信息API.py" "请求学生信息API.py" "请求学籍异动信息API.py") all_exist=true for file in "${files[@]}"; do if [ -f "$SCRIPT_DIR/$file" ]; then echo " ✓ $file" else echo " ✗ $file (缺失)" all_exist=false fi done echo "" # 测试2: 检查执行权限 echo "测试2: 检查执行权限..." if [ -x "$SCRIPT_DIR/run_script.sh" ]; then echo " ✓ run_script.sh 有执行权限" else echo " ✗ run_script.sh 缺少执行权限" echo " 执行: chmod +x $SCRIPT_DIR/run_script.sh" fi echo "" # 测试3: 检查日志目录 echo "测试3: 检查日志目录..." if [ -d "$SCRIPT_DIR/logs" ]; then echo " ✓ logs/ 目录存在" else echo " ⚠ logs/ 目录不存在,将自动创建" mkdir -p "$SCRIPT_DIR/logs" echo " ✓ logs/ 目录已创建" fi echo "" # 测试4: 检查Python环境 echo "测试4: 检查Python环境..." if command -v python3 &> /dev/null; then PYTHON_VERSION=$(python3 --version) echo " ✓ Python3 已安装: $PYTHON_VERSION" # 检查必要的Python包 echo " 检查Python依赖包..." packages=("pymysql" "requests" "Crypto") for pkg in "${packages[@]}"; do if python3 -c "import ${pkg//-/_}" 2>/dev/null; then echo " ✓ $pkg" else echo " ✗ $pkg (未安装)" echo " 执行: pip3 install $pkg" fi done else echo " ✗ Python3 未安装或不在PATH中" fi echo "" # 测试5: 检查crontab配置语法 echo "测试5: 检查crontab配置语法..." if [ -f "$SCRIPT_DIR/crontab_config.txt" ]; then # 提取crontab行(排除注释) crontab_lines=$(grep -E "^[0-9*]" "$SCRIPT_DIR/crontab_config.txt" | wc -l) echo " ✓ 找到 $crontab_lines 个crontab任务配置" # 检查路径是否正确 if grep -q "$SCRIPT_DIR" "$SCRIPT_DIR/crontab_config.txt"; then echo " ✓ 路径配置正确" else echo " ⚠ 路径可能不正确,请检查crontab_config.txt中的路径" fi else echo " ✗ crontab_config.txt 不存在" fi echo "" # 测试6: 测试脚本启动器(不实际执行Python脚本) echo "测试6: 测试脚本启动器..." if [ -x "$SCRIPT_DIR/run_script.sh" ]; then # 测试脚本是否能正确解析参数(使用不存在的脚本名,应该失败但不报错) if bash "$SCRIPT_DIR/run_script.sh" "测试脚本名" 2>&1 | grep -q "错误\|未指定"; then echo " ✓ 脚本启动器参数检查正常" else echo " ⚠ 脚本启动器测试未完全通过" fi else echo " ✗ 无法测试脚本启动器(缺少执行权限)" fi echo "" # 测试7: 显示当前crontab任务 echo "测试7: 当前crontab任务..." if crontab -l 2>/dev/null | grep -q "请求"; then echo " ✓ 已安装超星数据同步任务" echo " 当前任务:" crontab -l | grep "请求" | sed 's/^/ /' else echo " ⚠ 未检测到已安装的定时任务" echo " 执行安装: ./install_crontab.sh" fi echo "" echo "==========================================" echo "测试完成" echo "==========================================" echo "" echo "如果所有测试通过,可以执行以下命令安装定时任务:" echo " ./install_crontab.sh" echo "" echo "或者手动安装:" echo " crontab crontab_config.txt" echo ""