From aedf70f75b4b66e71d12c1e0e8f14ccb0074d95c Mon Sep 17 00:00:00 2001 From: Olia Lisa Date: Wed, 22 Jul 2026 20:04:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9C=A8=E8=BE=93=E5=85=A5lan=E5=8F=A3?= =?UTF-8?q?ip=E6=97=B6,=20=E5=A2=9E=E5=8A=A0=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hiwifi-b70.sh | 32 +++++++++++++++++++++++++++++++- newifi3_d2.sh | 31 ++++++++++++++++++++++++++++++- r2s.sh | 32 +++++++++++++++++++++++++++++++- x86-64.sh | 32 +++++++++++++++++++++++++++++++- 4 files changed, 123 insertions(+), 4 deletions(-) diff --git a/hiwifi-b70.sh b/hiwifi-b70.sh index f3930ef..3421034 100644 --- a/hiwifi-b70.sh +++ b/hiwifi-b70.sh @@ -175,6 +175,36 @@ ask_input() { fi } +# 获取lan口ip +input_lan_ip() { + local default_ip="$1" + + while true; do + local ip + + ip=$(ask_input "请输入lan口ip" "$default_ip") + + if valid_ipv4 "$ip"; then + echo "$ip" + return 0 + else + echo "[错误] IP地址格式不正确,请重新输入" >&2 + fi + done +} + +valid_ipv4() { + local ip="$1" + + echo "$ip" | awk -F. ' + NF==4 && + $1>=0 && $1<=255 && + $2>=0 && $2<=255 && + $3>=0 && $3<=255 && + $4>=0 && $4<=255 + ' +} + project_dir="$(cd "$(dirname "$0")" && pwd)" cd "$project_dir" @@ -184,7 +214,7 @@ version=$(ask_input "请输入 ImmortalWrt 版本" "$default_version") # lan口ip default_lan_ip="192.168.1.1" -lan_ip=$(ask_input "请输入lan口ip" $default_lan_ip) +lan_ip=$(input_lan_ip "$default_lan_ip") install_dependencies diff --git a/newifi3_d2.sh b/newifi3_d2.sh index 77282ca..2e7c7d9 100644 --- a/newifi3_d2.sh +++ b/newifi3_d2.sh @@ -174,6 +174,35 @@ build() { echo -e "固件输出: ${PROJECT_OUTPUT_DIR}" } +# 获取lan口ip +input_lan_ip() { + local default_ip="$1" + + while true; do + local ip + + ip=$(ask_input "请输入lan口ip" "$default_ip") + + if valid_ipv4 "$ip"; then + echo "$ip" + return 0 + else + echo "[错误] IP地址格式不正确,请重新输入" >&2 + fi + done +} + +valid_ipv4() { + local ip="$1" + + echo "$ip" | awk -F. ' + NF==4 && + $1>=0 && $1<=255 && + $2>=0 && $2<=255 && + $3>=0 && $3<=255 && + $4>=0 && $4<=255 + ' +} project_dir="$(cd "$(dirname "$0")" && pwd)" cd "$project_dir" @@ -184,7 +213,7 @@ version=$(ask_input "请输入 ImmortalWrt 版本" "$default_version") # lan口ip default_lan_ip="192.168.1.1" -lan_ip=$(ask_input "请输入lan口ip" $default_lan_ip) +lan_ip=$(input_lan_ip "$default_lan_ip") # 安装依赖 install_dependencies diff --git a/r2s.sh b/r2s.sh index fb28fb9..2aea275 100644 --- a/r2s.sh +++ b/r2s.sh @@ -222,6 +222,36 @@ ask_input() { fi } +# 获取lan口ip +input_lan_ip() { + local default_ip="$1" + + while true; do + local ip + + ip=$(ask_input "请输入lan口ip" "$default_ip") + + if valid_ipv4 "$ip"; then + echo "$ip" + return 0 + else + echo "[错误] IP地址格式不正确,请重新输入" >&2 + fi + done +} + +valid_ipv4() { + local ip="$1" + + echo "$ip" | awk -F. ' + NF==4 && + $1>=0 && $1<=255 && + $2>=0 && $2<=255 && + $3>=0 && $3<=255 && + $4>=0 && $4<=255 + ' +} + # 项目根目录,保证从任意位置执行 r2s.sh 都能找到其他资源 project_dir="$(cd "$(dirname "$0")" && pwd)" cd "$project_dir" @@ -236,7 +266,7 @@ rootfs_partsize=$(ask_input "请输入根分区大小(MB)" "$default_rootfs_part # lan口ip default_lan_ip="192.168.1.1" -lan_ip=$(ask_input "请输入lan口ip" $default_lan_ip) +lan_ip=$(input_lan_ip "$default_lan_ip") install_dependencies diff --git a/x86-64.sh b/x86-64.sh index 58a416d..cc6ee48 100644 --- a/x86-64.sh +++ b/x86-64.sh @@ -248,6 +248,36 @@ ask_input() { fi } +# 获取lan口ip +input_lan_ip() { + local default_ip="$1" + + while true; do + local ip + + ip=$(ask_input "请输入lan口ip" "$default_ip") + + if valid_ipv4 "$ip"; then + echo "$ip" + return 0 + else + echo "[错误] IP地址格式不正确,请重新输入" >&2 + fi + done +} + +valid_ipv4() { + local ip="$1" + + echo "$ip" | awk -F. ' + NF==4 && + $1>=0 && $1<=255 && + $2>=0 && $2<=255 && + $3>=0 && $3<=255 && + $4>=0 && $4<=255 + ' +} + # 项目根目录,用来保证从任意位置执行 main.sh 都能找到其他脚本 project_dir="$(cd "$(dirname "$0")" && pwd)" cd "$project_dir" @@ -262,7 +292,7 @@ rootfs_partsize=$(ask_input "请输入根分区大小(MB)" "$default_rootfs_part # lan口ip default_lan_ip="192.168.1.1" -lan_ip=$(ask_input "请输入lan口ip" $default_lan_ip) +lan_ip=$(input_lan_ip "$default_lan_ip") # 安装依赖 install_dependencies