Unverified Commit d70180c8 authored by wukongdaily's avatar wukongdaily Committed by GitHub
Browse files

解决R5C和E20C网口顺序错误的问题

解决R5C和E20C网口顺序错误的问题
https://github.com/wukongdaily/AutoBuildImmortalWrt/discussions/336
parents be28eddf d355156a
...@@ -23,58 +23,76 @@ else ...@@ -23,58 +23,76 @@ else
. "$SETTINGS_FILE" . "$SETTINGS_FILE"
fi fi
# 计算网卡数量 # 1. 先获取所有物理接口列表
count=0
ifnames="" ifnames=""
for iface in /sys/class/net/*; do for iface in /sys/class/net/*; do
iface_name=$(basename "$iface") iface_name=$(basename "$iface")
# 检查是否为物理网卡(排除回环设备和无线设备)
if [ -e "$iface/device" ] && echo "$iface_name" | grep -Eq '^eth|^en'; then if [ -e "$iface/device" ] && echo "$iface_name" | grep -Eq '^eth|^en'; then
count=$((count + 1))
ifnames="$ifnames $iface_name" ifnames="$ifnames $iface_name"
fi fi
done done
# 删除多余空格
ifnames=$(echo "$ifnames" | awk '{$1=$1};1') ifnames=$(echo "$ifnames" | awk '{$1=$1};1')
# 网络设置 count=$(echo "$ifnames" | wc -w)
echo "Detected physical interfaces: $ifnames" >>$LOGFILE
echo "Interface count: $count" >>$LOGFILE
# 2. 根据板子型号映射WAN和LAN接口
board_name=$(cat /tmp/sysinfo/board_name 2>/dev/null || echo "unknown")
echo "Board detected: $board_name" >>$LOGFILE
wan_ifname=""
lan_ifnames=""
# 此处特殊处理个别开发板网口顺序问题
case "$board_name" in
"radxa,e20c"|"friendlyarm,nanopi-r5c")
wan_ifname="eth1"
lan_ifnames="eth0"
echo "Using $board_name mapping: WAN=$wan_ifname LAN=$lan_ifnames" >>"$LOGFILE"
;;
*)
# 默认第一个接口为WAN,其余为LAN
wan_ifname=$(echo "$ifnames" | awk '{print $1}')
lan_ifnames=$(echo "$ifnames" | cut -d ' ' -f2-)
echo "Using default mapping: WAN=$wan_ifname LAN=$lan_ifnames" >>"$LOGFILE"
;;
esac
# 3. 配置网络
if [ "$count" -eq 1 ]; then if [ "$count" -eq 1 ]; then
# 单网口设备 类似于NAS模式 动态获取ip模式 具体ip地址取决于上一级路由器给它分配的ip 也方便后续你使用web页面设置旁路由 # 单网口设备,DHCP模式
# 单网口设备 不支持修改ip 不要在此处修改ip 单网口采用dhcp模式 删除默认的192.168.1.1
uci set network.lan.proto='dhcp' uci set network.lan.proto='dhcp'
uci delete network.lan.ipaddr uci delete network.lan.ipaddr
uci delete network.lan.netmask uci delete network.lan.netmask
uci delete network.lan.gateway uci delete network.lan.gateway
uci delete network.lan.dns uci delete network.lan.dns
uci commit network uci commit network
elif [ "$count" -gt 1 ]; then elif [ "$count" -gt 1 ]; then
# 提取第一个接口作为WAN # 多网口设备配置
wan_ifname=$(echo "$ifnames" | awk '{print $1}') # 配置WAN
# 剩余接口保留给LAN
lan_ifnames=$(echo "$ifnames" | cut -d ' ' -f2-)
# 设置WAN接口基础配置
uci set network.wan=interface uci set network.wan=interface
# 提取第一个接口作为WAN
uci set network.wan.device="$wan_ifname" uci set network.wan.device="$wan_ifname"
# WAN接口默认DHCP
uci set network.wan.proto='dhcp' uci set network.wan.proto='dhcp'
# 设置WAN6绑定网口eth0
# 配置WAN6
uci set network.wan6=interface uci set network.wan6=interface
uci set network.wan6.device="$wan_ifname" uci set network.wan6.device="$wan_ifname"
# 更新LAN接口成员 uci set network.wan6.proto='dhcpv6'
# 查找对应设备的section名称
# 查找 br-lan 设备 section
section=$(uci show network | awk -F '[.=]' '/\.@?device\[\d+\]\.name=.br-lan.$/ {print $2; exit}') section=$(uci show network | awk -F '[.=]' '/\.@?device\[\d+\]\.name=.br-lan.$/ {print $2; exit}')
if [ -z "$section" ]; then if [ -z "$section" ]; then
echo "error:cannot find device 'br-lan'." >>$LOGFILE echo "error:cannot find device 'br-lan'." >>$LOGFILE
else else
# 删除原来的ports列表 # 删除原ports
uci -q delete "network.$section.ports" uci -q delete "network.$section.ports"
# 添加新的ports列表 # 添加LAN接口端口
for port in $lan_ifnames; do for port in $lan_ifnames; do
uci add_list "network.$section.ports"="$port" uci add_list "network.$section.ports"="$port"
done done
echo "ports of device 'br-lan' are update." >>$LOGFILE echo "Updated br-lan ports: $lan_ifnames" >>$LOGFILE
fi fi
# LAN口设置静态IP # LAN口设置静态IP
uci set network.lan.proto='static' uci set network.lan.proto='static'
# 多网口设备 支持修改为别的管理后台地址 在Github Action 的UI上自行输入即可 # 多网口设备 支持修改为别的管理后台地址 在Github Action 的UI上自行输入即可
...@@ -91,23 +109,22 @@ elif [ "$count" -gt 1 ]; then ...@@ -91,23 +109,22 @@ elif [ "$count" -gt 1 ]; then
echo "default router ip is 192.168.100.1" >> $LOGFILE echo "default router ip is 192.168.100.1" >> $LOGFILE
fi fi
# PPPoE设置
# 判断是否启用 PPPoE echo "enable_pppoe value: $enable_pppoe" >>$LOGFILE
echo "print enable_pppoe value=== $enable_pppoe" >>$LOGFILE
if [ "$enable_pppoe" = "yes" ]; then if [ "$enable_pppoe" = "yes" ]; then
echo "PPPoE is enabled at $(date)" >>$LOGFILE echo "PPPoE enabled, configuring..." >>$LOGFILE
# 设置ipv4宽带拨号信息
uci set network.wan.proto='pppoe' uci set network.wan.proto='pppoe'
uci set network.wan.username=$pppoe_account uci set network.wan.username="$pppoe_account"
uci set network.wan.password=$pppoe_password uci set network.wan.password="$pppoe_password"
uci set network.wan.peerdns='1' uci set network.wan.peerdns='1'
uci set network.wan.auto='1' uci set network.wan.auto='1'
# 设置ipv6 默认不配置协议
uci set network.wan6.proto='none' uci set network.wan6.proto='none'
echo "PPPoE configuration completed successfully." >>$LOGFILE echo "PPPoE config done." >>$LOGFILE
else else
echo "PPPoE is not enabled. Skipping configuration." >>$LOGFILE echo "PPPoE not enabled." >>$LOGFILE
fi fi
uci commit network
fi fi
# 若安装了dockerd 则设置docker的防火墙规则 # 若安装了dockerd 则设置docker的防火墙规则
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment