diff --git a/install.sh b/install.sh index 0e09531..18722b0 100644 --- a/install.sh +++ b/install.sh @@ -8,9 +8,6 @@ set -e -# 重定向标准输入到终端,解决管道执行时无法读取用户输入的问题 -exec < /dev/tty - # 颜色定义 RED='\033[0;31m' @@ -167,7 +164,7 @@ choose_mirror() { echo "" while true; do - read -p "请输入选项 [1-2]: " mirror_choice + read -p "请输入选项 [1-2]: " mirror_choice < /dev/tty case $mirror_choice in 1) print_info "使用官方源" @@ -325,7 +322,7 @@ choose_access_mode() { echo "" while true; do - read -p "请输入选项 [1-2]: " mode_choice + read -p "请输入选项 [1-2]: " mode_choice < /dev/tty case $mode_choice in 1) USE_DOMAIN=true @@ -349,7 +346,7 @@ choose_access_mode() { configure_domain() { echo "" while true; do - read -p "请输入您的域名 (例如: wwy.example.com): " DOMAIN + read -p "请输入您的域名 (例如: wwy.example.com): " DOMAIN < /dev/tty if [[ -z "$DOMAIN" ]]; then print_error "域名不能为空" continue @@ -373,7 +370,7 @@ configure_domain() { print_warning "域名未解析到当前服务器IP" print_info "域名解析IP: $DOMAIN_IP" print_info "当前服务器IP: $PUBLIC_IP" - read -p "是否继续? (y/n): " continue_choice + read -p "是否继续? (y/n): " continue_choice < /dev/tty if [[ "$continue_choice" == "y" || "$continue_choice" == "Y" ]]; then break fi @@ -413,7 +410,7 @@ choose_ssl_method() { echo "" while true; do - read -p "请输入选项 [1-8]: " ssl_choice + read -p "请输入选项 [1-8]: " ssl_choice < /dev/tty case $ssl_choice in 1|2|3|4|5|6|7|8) SSL_METHOD=$ssl_choice @@ -472,7 +469,7 @@ ssl_fallback() { echo "" while true; do - read -p "请选择备选方案 [2-4/8]: " retry_choice + read -p "请选择备选方案 [2-4/8]: " retry_choice < /dev/tty case $retry_choice in 2) deploy_acme_letsencrypt && return 0 @@ -589,8 +586,8 @@ deploy_aliyun_ssl() { print_warning "此功能需要您提供阿里云AccessKey" echo "" - read -p "阿里云AccessKey ID: " ALIYUN_ACCESS_KEY_ID - read -p "阿里云AccessKey Secret: " ALIYUN_ACCESS_KEY_SECRET + read -p "阿里云AccessKey ID: " ALIYUN_ACCESS_KEY_ID < /dev/tty + read -p "阿里云AccessKey Secret: " ALIYUN_ACCESS_KEY_SECRET < /dev/tty # 这里需要调用阿里云API申请证书 # 暂时返回失败,提示用户使用其他方案 @@ -603,8 +600,8 @@ deploy_tencent_ssl() { print_warning "此功能需要您提供腾讯云SecretKey" echo "" - read -p "腾讯云SecretId: " TENCENT_SECRET_ID - read -p "腾讯云SecretKey: " TENCENT_SECRET_KEY + read -p "腾讯云SecretId: " TENCENT_SECRET_ID < /dev/tty + read -p "腾讯云SecretKey: " TENCENT_SECRET_KEY < /dev/tty # 这里需要调用腾讯云API申请证书 # 暂时返回失败,提示用户使用其他方案 @@ -620,7 +617,7 @@ deploy_manual_ssl() { print_info "- 证书文件: /tmp/ssl_cert.crt" print_info "- 私钥文件: /tmp/ssl_key.key" echo "" - read -p "上传完成后按回车继续..." + read -p "上传完成后按回车继续..." < /dev/tty if [[ -f /tmp/ssl_cert.crt ]] && [[ -f /tmp/ssl_key.key ]]; then mkdir -p /etc/nginx/ssl @@ -644,7 +641,7 @@ create_project_directory() { if [[ -d "$PROJECT_DIR" ]]; then print_warning "项目目录已存在" - read -p "是否删除并重新创建? (y/n): " recreate + read -p "是否删除并重新创建? (y/n): " recreate < /dev/tty if [[ "$recreate" == "y" || "$recreate" == "Y" ]]; then rm -rf "$PROJECT_DIR" else @@ -683,7 +680,7 @@ configure_admin_account() { echo "" while true; do - read -p "管理员用户名 [默认: admin]: " ADMIN_USERNAME + read -p "管理员用户名 [默认: admin]: " ADMIN_USERNAME < /dev/tty ADMIN_USERNAME=${ADMIN_USERNAME:-admin} if [[ ${#ADMIN_USERNAME} -lt 3 ]]; then @@ -694,14 +691,14 @@ configure_admin_account() { done while true; do - read -s -p "管理员密码(至少6位): " ADMIN_PASSWORD + read -s -p "管理员密码(至少6位): " ADMIN_PASSWORD < /dev/tty echo "" if [[ ${#ADMIN_PASSWORD} -lt 6 ]]; then print_error "密码至少6个字符" continue fi - read -s -p "确认密码: " ADMIN_PASSWORD_CONFIRM + read -s -p "确认密码: " ADMIN_PASSWORD_CONFIRM < /dev/tty echo "" if [[ "$ADMIN_PASSWORD" != "$ADMIN_PASSWORD_CONFIRM" ]]; then print_error "两次密码不一致"