124 lines
3.8 KiB
Bash
Executable File
124 lines
3.8 KiB
Bash
Executable File
#!/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 ""
|
|
|