37 lines
1.3 KiB
Bash
37 lines
1.3 KiB
Bash
|
|
#!/usr/bin/env bash
|
|||
|
|
# 清理 H5 图形验证码、短信验证码、限流与黑名单等 Redis 缓存
|
|||
|
|
# 使用场景:验证码异常、发送过于频繁、需要重置限流时,在生产服务器执行
|
|||
|
|
#
|
|||
|
|
# 用法(在生产服务器 192.168.71.56 上执行):
|
|||
|
|
# cd /opt/pangu-user-platform && bash scripts/clear-h5-captcha-cache.sh
|
|||
|
|
# REDIS_PASSWORD=你的密码 bash scripts/clear-h5-captcha-cache.sh
|
|||
|
|
# 若后端使用 application-test.yml,密码请以该文件为准。
|
|||
|
|
|
|||
|
|
set -e
|
|||
|
|
REDIS_HOST="${REDIS_HOST:-127.0.0.1}"
|
|||
|
|
REDIS_PORT="${REDIS_PORT:-6379}"
|
|||
|
|
REDIS_PASSWORD="${REDIS_PASSWORD:-}"
|
|||
|
|
|
|||
|
|
if ! command -v redis-cli &>/dev/null; then
|
|||
|
|
echo "未找到 redis-cli,请安装 Redis 客户端或在已安装的机器上执行"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
CLI=(redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT")
|
|||
|
|
if [[ -n "$REDIS_PASSWORD" ]]; then
|
|||
|
|
CLI+=(-a "$REDIS_PASSWORD")
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "清理 H5 验证码与短信相关缓存 (host=$REDIS_HOST port=$REDIS_PORT) ..."
|
|||
|
|
|
|||
|
|
for pattern in "global:captcha_codes:*" "h5:sms:*"; do
|
|||
|
|
count=0
|
|||
|
|
while IFS= read -r key; do
|
|||
|
|
[[ -z "$key" ]] && continue
|
|||
|
|
"${CLI[@]}" DEL "$key" &>/dev/null && ((count++)) || true
|
|||
|
|
done < <("${CLI[@]}" --no-auth-warning KEYS "$pattern" 2>/dev/null || true)
|
|||
|
|
echo " 已删除 pattern=$pattern 数量=$count"
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
echo "清理完成。"
|