feat: 修改ip脚本, 增加对25.12以下版本的支持, 比如24.10等

This commit is contained in:
Olia Lisa
2026-07-13 15:31:45 +08:00
parent 69f9855b95
commit ca0de3ed66
+37 -9
View File
@@ -2,6 +2,28 @@
# 仅在首次启动时执行(/etc/uci-defaults机制)
# 获取当前 OpenWrt/ImmortalWrt 的主版本号
get_openwrt_version() {
local version=""
if [ -f /etc/openwrt_release ]; then
# 提取形如 25.12 或 23.05 的前两位数字版本
version=$(grep "DISTRIB_RELEASE" /etc/openwrt_release | cut -d"'" -f2 | cut -d'.' -f1,2)
fi
echo "$version"
}
# 比较版本号是否大于或等于 25.12
# 返回 0 表示 >= 25.12,返回 1 表示较旧版本
is_version_25_12_or_newer() {
local current_ver=$(get_openwrt_version)
# 如果没获取到版本号,保守起见当做旧版本处理
[ -z "$current_ver" ] && return 1
# 使用 awk 进行浮点数版本比较
awk -v cur="$current_ver" 'BEGIN { if (cur >= 25.12) exit 0; else exit 1 }'
}
# 修改 LAN 口 IP 地址
update_lan_ip(){
local NEW_LAN_IP="$1"
@@ -12,26 +34,32 @@ update_lan_ip(){
# 检查 lan 接口是否存在
if uci get network.lan >/dev/null 2>&1; then
# 修改 LAN IP
uci set network.lan.ipaddr="${NEW_LAN_IP}/24"
# 设置为静态 IP 协议
uci set network.lan.proto='static'
# 根据版本号执行不同的设置逻辑
if is_version_25_12_or_newer; then
# 25.12+ 版本:合并为 CIDR 格式,并清除可能残留的旧 netmask
uci set network.lan.ipaddr="${NEW_LAN_IP}/24"
uci del network.lan.netmask >/dev/null 2>&1
else
# 25.12 以下旧版本:拆分为 ipaddr 和 netmask
uci set network.lan.ipaddr="${NEW_LAN_IP}"
uci set network.lan.netmask="255.255.255.0"
fi
# 保存配置
uci commit network
fi
fi
# 重启网络服务
if [ -x /etc/init.d/network ]; then
/etc/init.d/network restart
fi
}
# 启用 LAN IP 修改
# 启用 LAN IP 修改(根据具体需求解除注释)
# update_lan_ip "192.168.50.100"
exit 0
exit 0