test_crontab.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #!/bin/bash
  2. # 测试crontab配置脚本
  3. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  4. cd "$SCRIPT_DIR" || exit 1
  5. echo "=========================================="
  6. echo "超星数据同步定时任务配置测试"
  7. echo "=========================================="
  8. echo ""
  9. # 测试1: 检查文件是否存在
  10. echo "测试1: 检查必要文件..."
  11. files=("run_script.sh" "crontab_config.txt" "请求系部信息API.py" "请求专业信息API.py" "请求班级信息API.py" "请求学生信息API.py" "请求学籍异动信息API.py")
  12. all_exist=true
  13. for file in "${files[@]}"; do
  14. if [ -f "$SCRIPT_DIR/$file" ]; then
  15. echo " ✓ $file"
  16. else
  17. echo " ✗ $file (缺失)"
  18. all_exist=false
  19. fi
  20. done
  21. echo ""
  22. # 测试2: 检查执行权限
  23. echo "测试2: 检查执行权限..."
  24. if [ -x "$SCRIPT_DIR/run_script.sh" ]; then
  25. echo " ✓ run_script.sh 有执行权限"
  26. else
  27. echo " ✗ run_script.sh 缺少执行权限"
  28. echo " 执行: chmod +x $SCRIPT_DIR/run_script.sh"
  29. fi
  30. echo ""
  31. # 测试3: 检查日志目录
  32. echo "测试3: 检查日志目录..."
  33. if [ -d "$SCRIPT_DIR/logs" ]; then
  34. echo " ✓ logs/ 目录存在"
  35. else
  36. echo " ⚠ logs/ 目录不存在,将自动创建"
  37. mkdir -p "$SCRIPT_DIR/logs"
  38. echo " ✓ logs/ 目录已创建"
  39. fi
  40. echo ""
  41. # 测试4: 检查Python环境
  42. echo "测试4: 检查Python环境..."
  43. if command -v python3 &> /dev/null; then
  44. PYTHON_VERSION=$(python3 --version)
  45. echo " ✓ Python3 已安装: $PYTHON_VERSION"
  46. # 检查必要的Python包
  47. echo " 检查Python依赖包..."
  48. packages=("pymysql" "requests" "Crypto")
  49. for pkg in "${packages[@]}"; do
  50. if python3 -c "import ${pkg//-/_}" 2>/dev/null; then
  51. echo " ✓ $pkg"
  52. else
  53. echo " ✗ $pkg (未安装)"
  54. echo " 执行: pip3 install $pkg"
  55. fi
  56. done
  57. else
  58. echo " ✗ Python3 未安装或不在PATH中"
  59. fi
  60. echo ""
  61. # 测试5: 检查crontab配置语法
  62. echo "测试5: 检查crontab配置语法..."
  63. if [ -f "$SCRIPT_DIR/crontab_config.txt" ]; then
  64. # 提取crontab行(排除注释)
  65. crontab_lines=$(grep -E "^[0-9*]" "$SCRIPT_DIR/crontab_config.txt" | wc -l)
  66. echo " ✓ 找到 $crontab_lines 个crontab任务配置"
  67. # 检查路径是否正确
  68. if grep -q "$SCRIPT_DIR" "$SCRIPT_DIR/crontab_config.txt"; then
  69. echo " ✓ 路径配置正确"
  70. else
  71. echo " ⚠ 路径可能不正确,请检查crontab_config.txt中的路径"
  72. fi
  73. else
  74. echo " ✗ crontab_config.txt 不存在"
  75. fi
  76. echo ""
  77. # 测试6: 测试脚本启动器(不实际执行Python脚本)
  78. echo "测试6: 测试脚本启动器..."
  79. if [ -x "$SCRIPT_DIR/run_script.sh" ]; then
  80. # 测试脚本是否能正确解析参数(使用不存在的脚本名,应该失败但不报错)
  81. if bash "$SCRIPT_DIR/run_script.sh" "测试脚本名" 2>&1 | grep -q "错误\|未指定"; then
  82. echo " ✓ 脚本启动器参数检查正常"
  83. else
  84. echo " ⚠ 脚本启动器测试未完全通过"
  85. fi
  86. else
  87. echo " ✗ 无法测试脚本启动器(缺少执行权限)"
  88. fi
  89. echo ""
  90. # 测试7: 显示当前crontab任务
  91. echo "测试7: 当前crontab任务..."
  92. if crontab -l 2>/dev/null | grep -q "请求"; then
  93. echo " ✓ 已安装超星数据同步任务"
  94. echo " 当前任务:"
  95. crontab -l | grep "请求" | sed 's/^/ /'
  96. else
  97. echo " ⚠ 未检测到已安装的定时任务"
  98. echo " 执行安装: ./install_crontab.sh"
  99. fi
  100. echo ""
  101. echo "=========================================="
  102. echo "测试完成"
  103. echo "=========================================="
  104. echo ""
  105. echo "如果所有测试通过,可以执行以下命令安装定时任务:"
  106. echo " ./install_crontab.sh"
  107. echo ""
  108. echo "或者手动安装:"
  109. echo " crontab crontab_config.txt"
  110. echo ""