add DiskIdxMap recommended, fix multiple network cards

This commit is contained in:
Ing 2023-04-23 05:03:09 +08:00
parent 36440fc087
commit bf6ede928a
3 changed files with 13 additions and 11 deletions

View File

@ -91,7 +91,7 @@ NETIF_NUM=${CMDLINE["netif_num"]}
NETRL_NUM=`ip link show | grep ether | wc -l` NETRL_NUM=`ip link show | grep ether | wc -l`
if [ ${NETIF_NUM} -ne ${NETRL_NUM} ]; then if [ ${NETIF_NUM} -ne ${NETRL_NUM} ]; then
echo -e "\033[1;33m*** `printf "$(TEXT "netif_num is not equal to real network card amount, set netif_num to %s")" "${NETRL_NUM}"` ***\033[0m" echo -e "\033[1;33m*** `printf "$(TEXT "netif_num is not equal to real network card amount, set netif_num to %s")" "${NETRL_NUM}"` ***\033[0m"
CMDLINE["netif_num"]=${MACS} CMDLINE["netif_num"]=${NETRL_NUM}
fi fi
# Prepare command line # Prepare command line
@ -117,12 +117,12 @@ echo -e "$(TEXT "Cmdline:\n")\033[1;36m${CMDLINE_LINE}\033[0m"
COUNT=0 COUNT=0
echo -n "$(TEXT "IP")" echo -n "$(TEXT "IP")"
while true; do while true; do
IP=`ip route get 1.1.1.1 2>/dev/null | awk '{print$7}'` IP=`ip route 2>/dev/null | sed -n 's/.* via .* dev \(.*\) src \(.*\) metric .*/\1: \2 /p'` # `ip route get 1.1.1.1 2>/dev/null | awk '{print$7}'`
if [ -n "${IP}" ]; then if [ -n "${IP}" ]; then
echo -e ": \033[1;32m${IP}\033[0m" echo -e ": \033[1;32m\n${IP}\033[0m"
break break
elif [ ${COUNT} -eq 30 ]; then elif [ ${COUNT} -eq 30 ]; then
echo -e ": \033[1;31mERROR\033[0m" echo -e ": \033[1;31m\nERROR\033[0m"
break break
fi fi
COUNT=$((${COUNT}+1)) COUNT=$((${COUNT}+1))

View File

@ -70,7 +70,7 @@ fi
# Get first MAC address # Get first MAC address
MACS=`ip link show | awk '/ether/{print$2}'` MACS=`ip link show | awk '/ether/{print$2}'`
MACFS=(`echo ${MACS} | sed 's/://g'`) MACFS=(`echo ${MACS} | sed 's/://g'`) # MACFS=(`cat /sys/class/net/eth*/address | sed 's/://g'`) # ?
# If user config file not exists, initialize it # If user config file not exists, initialize it
if [ ! -f "${USER_CONFIG_FILE}" ]; then if [ ! -f "${USER_CONFIG_FILE}" ]; then

View File

@ -13,7 +13,7 @@ if [ `cat /sys/block/${LOADER_DEVICE_NAME}/${LOADER_DEVICE_NAME}3/size` -lt 4194
fi fi
# Get actual IP # Get actual IP
IP=`ip route get 1.1.1.1 2>/dev/null | awk '{print$7}'` IP=`ip route 2>/dev/null | sed -n 's/.* via .* src \(.*\) metric .*/\1/p' | head -1` # `ip route get 1.1.1.1 2>/dev/null | awk '{print$7}'`
# Dirty flag # Dirty flag
DIRTY=0 DIRTY=0
@ -771,13 +771,14 @@ function advancedMenu() {
t) tryRecoveryDSM ;; t) tryRecoveryDSM ;;
s) MSG="" s) MSG=""
NUMPORTS=0 NUMPORTS=0
ATTACHTPORTS=0 ATTACHTNUM=0
DiskIdxMap="" DiskIdxMap=""
for PCI in `lspci -d ::106 | awk '{print$1}'`; do for PCI in `lspci -d ::106 | awk '{print$1}'`; do
NAME=`lspci -s "${PCI}" | sed "s/\ .*://"` NAME=`lspci -s "${PCI}" | sed "s/\ .*://"`
MSG+="\Zb${NAME}\Zn\nPorts: " MSG+="\Zb${NAME}\Zn\nPorts: "
unset HOSTPORTS unset HOSTPORTS
declare -A HOSTPORTS declare -A HOSTPORTS
ATTACHTIDX=0
while read LINE; do while read LINE; do
ATAPORT="`echo ${LINE} | grep -o 'ata[0-9]*'`" ATAPORT="`echo ${LINE} | grep -o 'ata[0-9]*'`"
PORT=`echo ${ATAPORT} | sed 's/ata//'` PORT=`echo ${ATAPORT} | sed 's/ata//'`
@ -787,13 +788,14 @@ function advancedMenu() {
ls -l /sys/block | fgrep -q "${PCI}/ata${PORT}" && ATTACH=1 || ATTACH=0 ls -l /sys/block | fgrep -q "${PCI}/ata${PORT}" && ATTACH=1 || ATTACH=0
PCMD=`cat /sys/class/scsi_host/${HOSTPORTS[${PORT}]}/ahci_port_cmd` PCMD=`cat /sys/class/scsi_host/${HOSTPORTS[${PORT}]}/ahci_port_cmd`
[ "${PCMD}" = "0" ] && DUMMY=1 || DUMMY=0 [ "${PCMD}" = "0" ] && DUMMY=1 || DUMMY=0
[ ${ATTACH} -eq 1 ] && MSG+="\Z2\Zb" && ATTACHTPORTS=$((${ATTACHTPORTS}+1)) [ ${ATTACH} -eq 1 ] && MSG+="\Z2\Zb" && ATTACHTIDX=$((${ATTACHTIDX}+1))
[ ${DUMMY} -eq 1 ] && MSG+="\Z1" [ ${DUMMY} -eq 1 ] && MSG+="\Z1"
MSG+="${PORT}\Zn " MSG+="${PORT}\Zn "
NUMPORTS=$((${NUMPORTS}+1)) NUMPORTS=$((${NUMPORTS}+1))
done < <(echo ${!HOSTPORTS[@]} | tr ' ' '\n' | sort -n) done < <(echo ${!HOSTPORTS[@]} | tr ' ' '\n' | sort -n)
MSG+="\n" MSG+="\n"
DiskIdxMap+=`printf '%02x' ${ATTACHTPORTS}` [ ${ATTACHTIDX} -gt 0 ] && DiskIdxMap+=`printf '%02x' ${ATTACHTNUM}` || DiskIdxMap+="ff"
ATTACHTNUM=$((${ATTACHTNUM}+${ATTACHTIDX}))
done done
MSG+="`printf "$(TEXT "\nTotal of ports: %s\n")" "${NUMPORTS}"`" MSG+="`printf "$(TEXT "\nTotal of ports: %s\n")" "${NUMPORTS}"`"
MSG+="$(TEXT "\nPorts with color \Z1red\Zn as DUMMY, color \Z2\Zbgreen\Zn has drive connected.")" MSG+="$(TEXT "\nPorts with color \Z1red\Zn as DUMMY, color \Z2\Zbgreen\Zn has drive connected.")"