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_PORT="15672"
|
||||||
RABBITMQ_USER="admin"
|
RABBITMQ_USER="admin"
|
||||||
RABBITMQ_PASS="admin"
|
RABBITMQ_PASS="admin"
|
||||||
VHOST="dataflow"
|
VHOST="datahub"
|
||||||
|
|
||||||
# 数据类型列表
|
# 数据类型列表
|
||||||
DATA_TYPES=("orders" "products" "refunds" "inventory")
|
DATA_TYPES=("orders" "products" "refunds" "inventory")
|
||||||
@@ -34,7 +34,8 @@ NC='\033[0m' # No Color
|
|||||||
# 帮助信息
|
# 帮助信息
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
show_help() {
|
show_help() {
|
||||||
cat << EOF
|
# 使用 printf '%b' 解释 ANSI 转义序列
|
||||||
|
printf '%b\n' "$(cat << EOF
|
||||||
${BLUE}RabbitMQ 配置管理脚本${NC}
|
${BLUE}RabbitMQ 配置管理脚本${NC}
|
||||||
|
|
||||||
${YELLOW}用法:${NC}
|
${YELLOW}用法:${NC}
|
||||||
@@ -61,6 +62,11 @@ ${YELLOW}命令:${NC}
|
|||||||
|
|
||||||
${GREEN}list${NC} 列出当前 MQ 中已配置的平台
|
${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} 显示此帮助信息
|
${GREEN}--help, -h${NC} 显示此帮助信息
|
||||||
|
|
||||||
${YELLOW}配置文件:${NC}
|
${YELLOW}配置文件:${NC}
|
||||||
@@ -85,6 +91,7 @@ ${YELLOW}示例:${NC}
|
|||||||
$0 list # 列出已配置的平台
|
$0 list # 列出已配置的平台
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
)"
|
||||||
}
|
}
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
@@ -559,13 +566,13 @@ create_system_users() {
|
|||||||
echo "创建系统用户..."
|
echo "创建系统用户..."
|
||||||
echo "========================================"
|
echo "========================================"
|
||||||
|
|
||||||
# 创建 dataflow 消费者用户
|
# 创建 datahub 消费者用户
|
||||||
rabbitmqadmin -H $RABBITMQ_HOST -P $RABBITMQ_PORT -u $RABBITMQ_USER -p $RABBITMQ_PASS \
|
rabbitmqadmin -H $RABBITMQ_HOST -P $RABBITMQ_PORT -u $RABBITMQ_USER -p $RABBITMQ_PASS \
|
||||||
declare user --name "user_dataflow_consumer" --password "$consumer_password" --tags ""
|
declare user --name "user_datahub_consumer" --password "$consumer_password" --tags ""
|
||||||
info "创建用户: user_dataflow_consumer"
|
info "创建用户: user_datahub_consumer"
|
||||||
|
|
||||||
rabbitmqadmin -H $RABBITMQ_HOST -P $RABBITMQ_PORT -u $RABBITMQ_USER -p $RABBITMQ_PASS \
|
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)$" \
|
--configure "^(main\\.exchange|errors\\.exchange|dlx\\..*)|(.*\\.queue)$" \
|
||||||
--write "^(orders|products|refunds|inventory).*\\.queue$|(dlx\\..*)|(errors\\.exchange)|(.*\\.errors\\.exchange)$" \
|
--write "^(orders|products|refunds|inventory).*\\.queue$|(dlx\\..*)|(errors\\.exchange)|(.*\\.errors\\.exchange)$" \
|
||||||
--read "^(main\\.exchange|(orders|products|refunds|inventory).*\\.queue|dlx\\..*)$"
|
--read "^(main\\.exchange|(orders|products|refunds|inventory).*\\.queue|dlx\\..*)$"
|
||||||
@@ -777,6 +784,81 @@ cmd_remove() {
|
|||||||
echo "已从 .env 移除: MQ_PASSWORD_${platform_upper}"
|
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 命令:列出已配置的平台
|
# list 命令:列出已配置的平台
|
||||||
cmd_list() {
|
cmd_list() {
|
||||||
echo -e "${BLUE}========================================"
|
echo -e "${BLUE}========================================"
|
||||||
@@ -844,6 +926,10 @@ main() {
|
|||||||
list)
|
list)
|
||||||
cmd_list
|
cmd_list
|
||||||
;;
|
;;
|
||||||
|
reset-password)
|
||||||
|
shift
|
||||||
|
cmd_reset_password "$@"
|
||||||
|
;;
|
||||||
--help|-h|help|"")
|
--help|-h|help|"")
|
||||||
show_help
|
show_help
|
||||||
;;
|
;;
|
||||||
|
|||||||
Reference in New Issue
Block a user