feat: 修改ip脚本, 增加对25.12以下版本的支持, 比如24.10等
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user