add user password reset
This commit is contained in:
+92
-6
@@ -18,7 +18,7 @@ RABBITMQ_HOST="127.0.0.1"
|
||||
RABBITMQ_PORT="15672"
|
||||
RABBITMQ_USER="admin"
|
||||
RABBITMQ_PASS="admin"
|
||||
VHOST="dataflow"
|
||||
VHOST="datahub"
|
||||
|
||||
# 数据类型列表
|
||||
DATA_TYPES=("orders" "products" "refunds" "inventory")
|
||||
@@ -34,7 +34,8 @@ NC='\033[0m' # No Color
|
||||
# 帮助信息
|
||||
# ============================================================================
|
||||
show_help() {
|
||||
cat << EOF
|
||||
# 使用 printf '%b' 解释 ANSI 转义序列
|
||||
printf '%b\n' "$(cat << EOF
|
||||
${BLUE}RabbitMQ 配置管理脚本${NC}
|
||||
|
||||
${YELLOW}用法:${NC}
|
||||
@@ -61,6 +62,11 @@ ${YELLOW}命令:${NC}
|
||||
|
||||
${GREEN}list${NC} 列出当前 MQ 中已配置的平台
|
||||
|
||||
${GREEN}reset-password${NC} 重置指定用户的密码
|
||||
--user <name> 用户名称 (consumer/ops/平台名)
|
||||
示例: $0 reset-password --user consumer
|
||||
示例: $0 reset-password --user tmall
|
||||
|
||||
${GREEN}--help, -h${NC} 显示此帮助信息
|
||||
|
||||
${YELLOW}配置文件:${NC}
|
||||
@@ -85,6 +91,7 @@ ${YELLOW}示例:${NC}
|
||||
$0 list # 列出已配置的平台
|
||||
|
||||
EOF
|
||||
)"
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
@@ -559,13 +566,13 @@ create_system_users() {
|
||||
echo "创建系统用户..."
|
||||
echo "========================================"
|
||||
|
||||
# 创建 dataflow 消费者用户
|
||||
# 创建 datahub 消费者用户
|
||||
rabbitmqadmin -H $RABBITMQ_HOST -P $RABBITMQ_PORT -u $RABBITMQ_USER -p $RABBITMQ_PASS \
|
||||
declare user --name "user_dataflow_consumer" --password "$consumer_password" --tags ""
|
||||
info "创建用户: user_dataflow_consumer"
|
||||
declare user --name "user_datahub_consumer" --password "$consumer_password" --tags ""
|
||||
info "创建用户: user_datahub_consumer"
|
||||
|
||||
rabbitmqadmin -H $RABBITMQ_HOST -P $RABBITMQ_PORT -u $RABBITMQ_USER -p $RABBITMQ_PASS \
|
||||
declare permissions --vhost "$VHOST" --user "user_dataflow_consumer" \
|
||||
declare permissions --vhost "$VHOST" --user "user_datahub_consumer" \
|
||||
--configure "^(main\\.exchange|errors\\.exchange|dlx\\..*)|(.*\\.queue)$" \
|
||||
--write "^(orders|products|refunds|inventory).*\\.queue$|(dlx\\..*)|(errors\\.exchange)|(.*\\.errors\\.exchange)$" \
|
||||
--read "^(main\\.exchange|(orders|products|refunds|inventory).*\\.queue|dlx\\..*)$"
|
||||
@@ -777,6 +784,81 @@ cmd_remove() {
|
||||
echo "已从 .env 移除: MQ_PASSWORD_${platform_upper}"
|
||||
}
|
||||
|
||||
# reset-password 命令:重置用户密码
|
||||
cmd_reset_password() {
|
||||
local user_name=""
|
||||
|
||||
# 解析参数
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--user)
|
||||
user_name="$2"
|
||||
shift 2
|
||||
;;
|
||||
*)
|
||||
error "未知参数: $1\n用法: $0 reset-password --user <name>"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ -z "$user_name" ]]; then
|
||||
error "请指定用户名称\n用法: $0 reset-password --user <name>\n示例: $0 reset-password --user consumer"
|
||||
fi
|
||||
|
||||
# 标准化用户名称
|
||||
local normalized_name=$(normalize_platform_name "$user_name")
|
||||
local new_password=$(generate_password)
|
||||
|
||||
echo -e "${BLUE}========================================"
|
||||
echo "重置用户密码: $normalized_name"
|
||||
echo "========================================${NC}"
|
||||
|
||||
# 判断用户类型并处理
|
||||
case "$normalized_name" in
|
||||
consumer)
|
||||
local mq_user="user_datahub_consumer"
|
||||
local env_key="CONSUMER"
|
||||
;;
|
||||
ops)
|
||||
local mq_user="user_ops"
|
||||
local env_key="OPS"
|
||||
;;
|
||||
*)
|
||||
# 平台用户
|
||||
local mq_user="user_${normalized_name}"
|
||||
local env_key=$(echo "$normalized_name" | tr '[:lower:]' '[:upper:]')
|
||||
;;
|
||||
esac
|
||||
|
||||
# 检查用户是否存在
|
||||
local user_exists=$(rabbitmqadmin -H $RABBITMQ_HOST -P $RABBITMQ_PORT -u $RABBITMQ_USER -p $RABBITMQ_PASS \
|
||||
list users name -f tsv 2>/dev/null | grep -w "^${mq_user}$" || true)
|
||||
|
||||
if [[ -z "$user_exists" ]]; then
|
||||
error "用户 '$mq_user' 不存在"
|
||||
fi
|
||||
|
||||
# 更新 RabbitMQ 用户密码
|
||||
echo ""
|
||||
rabbitmqadmin -H $RABBITMQ_HOST -P $RABBITMQ_PORT -u $RABBITMQ_USER -p $RABBITMQ_PASS \
|
||||
declare user --name "$mq_user" --password "$new_password" --tags ""
|
||||
info "RabbitMQ 用户密码已更新: $mq_user"
|
||||
|
||||
# 更新 .env 文件
|
||||
add_password_to_env "$env_key" "$new_password"
|
||||
info "密码已写入 .env: MQ_PASSWORD_${env_key}"
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}========================================"
|
||||
echo "密码重置成功!"
|
||||
echo "========================================${NC}"
|
||||
echo ""
|
||||
echo "用户: $mq_user"
|
||||
echo "新密码已保存到 .env: MQ_PASSWORD_${env_key}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}注意: 请确保相关服务使用新密码重新连接${NC}"
|
||||
}
|
||||
|
||||
# list 命令:列出已配置的平台
|
||||
cmd_list() {
|
||||
echo -e "${BLUE}========================================"
|
||||
@@ -844,6 +926,10 @@ main() {
|
||||
list)
|
||||
cmd_list
|
||||
;;
|
||||
reset-password)
|
||||
shift
|
||||
cmd_reset_password "$@"
|
||||
;;
|
||||
--help|-h|help|"")
|
||||
show_help
|
||||
;;
|
||||
|
||||
Reference in New Issue
Block a user