From ad582845f85c6cfd637528dfd6a76b8fea0bb396 Mon Sep 17 00:00:00 2001 From: AuxXxilium Date: Wed, 10 Jan 2024 20:21:26 +0100 Subject: [PATCH] boot/init: rewrite ip getting Signed-off-by: AuxXxilium --- files/initrd/opt/arc/arc.sh | 44 +++++++++++++++++++----------------- files/initrd/opt/arc/boot.sh | 7 +++--- files/initrd/opt/arc/init.sh | 5 ++-- 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/files/initrd/opt/arc/arc.sh b/files/initrd/opt/arc/arc.sh index e5d2d0b1..7d63306c 100755 --- a/files/initrd/opt/arc/arc.sh +++ b/files/initrd/opt/arc/arc.sh @@ -1880,14 +1880,11 @@ function sysinfo() { TEXT+="\n" TEXT+="\n\Z4> Network: ${ETH} NIC\Zn" for N in ${ETHX}; do + IP="" DRIVER=$(ls -ld /sys/class/net/${N}/device/driver 2>/dev/null | awk -F '/' '{print $NF}') MAC="$(cat /sys/class/net/${N}/address | sed 's/://g')" while true; do - if ethtool ${N} | grep 'Link detected' | grep -q 'no'; then - TEXT+="\n ${DRIVER}: \ZbIP: NOT CONNECTED | MAC: ${MAC}\Zn" - break - fi - NETIP="$(getIP)" + IP="$(getIP ${N})" if [ "${STATICIP}" = "true" ]; then ARCIP="$(readConfigKey "arc.ip" "${USER_CONFIG_FILE}")" if [[ "${N}" = "eth0" && -n "${ARCIP}" ]]; then @@ -1899,17 +1896,21 @@ function sysinfo() { else MSG="DHCP" fi - if [ -n "${NETIP}" ]; then + if [ -n "${IP}" ]; then SPEED=$(ethtool ${N} | grep "Speed:" | awk '{print $2}') - TEXT+="\n ${DRIVER} (${SPEED} | ${MSG}) \ZbIP: ${NETIP} | Mac: ${MAC}\Zn" + TEXT+="\n ${DRIVER} (${SPEED} | ${MSG}) \ZbIP: ${IP} | Mac: ${MAC}\Zn" break fi - COUNT=$((${COUNT} + 1)) - if [ ${COUNT} -eq 3 ]; then + if [ ${COUNT} -gt 3 ]; then TEXT+="\n ${DRIVER}: \ZbIP: TIMEOUT | MAC: ${MAC}\Zn" break fi - sleep 1 + sleep 3 + if ethtool ${N} | grep 'Link detected' | grep -q 'no'; then + TEXT+="\n ${DRIVER}: \ZbIP: NOT CONNECTED | MAC: ${MAC}\Zn" + break + fi + COUNT=$((${COUNT} + 3)) done done # Print Config Informations @@ -2093,14 +2094,11 @@ function fullsysinfo() { TEXT+="\n" TEXT+="\nNetwork: ${ETH} NIC" for N in ${ETHX}; do + IP="" DRIVER=$(ls -ld /sys/class/net/${N}/device/driver 2>/dev/null | awk -F '/' '{print $NF}') MAC="$(cat /sys/class/net/${N}/address | sed 's/://g')" while true; do - if ethtool ${N} | grep 'Link detected' | grep -q 'no'; then - TEXT+="\n${DRIVER}: IP: NOT CONNECTED | MAC: ${MAC}" - break - fi - NETIP="$(getIP)" + IP="$(getIP ${N})" if [ "${STATICIP}" = "true" ]; then ARCIP="$(readConfigKey "arc.ip" "${USER_CONFIG_FILE}")" if [[ "${N}" = "eth0" && -n "${ARCIP}" ]]; then @@ -2112,17 +2110,21 @@ function fullsysinfo() { else MSG="DHCP" fi - if [ -n "${NETIP}" ]; then + if [ -n "${IP}" ]; then SPEED=$(ethtool ${N} | grep "Speed:" | awk '{print $2}') - TEXT+="\n${DRIVER} (${SPEED} | ${MSG}) IP: ${NETIP} | Mac: ${MAC}" + TEXT+="\n ${DRIVER} (${SPEED} | ${MSG}) \ZbIP: ${IP} | Mac: ${MAC}\Zn" break fi - COUNT=$((${COUNT} + 1)) - if [ ${COUNT} -eq 3 ]; then - TEXT+="\n${DRIVER}: IP: TIMEOUT | MAC: ${MAC}" + if [ ${COUNT} -gt 3 ]; then + TEXT+="\n ${DRIVER}: \ZbIP: TIMEOUT | MAC: ${MAC}\Zn" break fi - sleep 1 + sleep 3 + if ethtool ${N} | grep 'Link detected' | grep -q 'no'; then + TEXT+="\n ${DRIVER}: \ZbIP: NOT CONNECTED | MAC: ${MAC}\Zn" + break + fi + COUNT=$((${COUNT} + 3)) done done TEXT+="\n" diff --git a/files/initrd/opt/arc/boot.sh b/files/initrd/opt/arc/boot.sh index e4c1c210..89464f5f 100755 --- a/files/initrd/opt/arc/boot.sh +++ b/files/initrd/opt/arc/boot.sh @@ -200,15 +200,16 @@ elif [ "${DIRECTBOOT}" = "false" ]; then [ ! -n "${IPCON}" ] && IPCON="${IP}" break fi - COUNT=$((${COUNT} + 3)) if [ ${COUNT} -gt ${BOOTIPWAIT} ]; then echo -e "\r${DRIVER}: TIMEOUT." break fi + sleep 3 if ethtool ${N} | grep 'Link detected' | grep -q 'no'; then - echo -e "\r${DRIVER}: NOT CONNECTED" + TEXT+="\n ${DRIVER}: \ZbIP: NOT CONNECTED | MAC: ${MAC}\Zn" break fi + COUNT=$((${COUNT} + 3)) done done BOOTWAIT="$(readConfigKey "arc.bootwait" "${USER_CONFIG_FILE}")" @@ -220,7 +221,7 @@ elif [ "${DIRECTBOOT}" = "false" ]; then echo -en "\r${MSG}" w | awk '{print $1" "$2" "$4" "$5" "$6}' >WC if ! diff WB WC >/dev/null 2>&1; then - echo -en "\rA new access is connected, Boot is interrupted.\n" + echo -en "\rA new access is connected, Boot is interrupted." rm -f WB WC exit 0 fi diff --git a/files/initrd/opt/arc/init.sh b/files/initrd/opt/arc/init.sh index f9fe9693..3bc4be69 100755 --- a/files/initrd/opt/arc/init.sh +++ b/files/initrd/opt/arc/init.sh @@ -154,15 +154,16 @@ for N in ${ETHX}; do echo -e "\r${DRIVER} (${SPEED} | ${MSG}): Access \033[1;34mhttp://${IP}:7681\033[0m to connect to Arc via web." break fi - COUNT=$((${COUNT} + 3)) if [ ${COUNT} -gt ${BOOTIPWAIT} ]; then echo -e "\r${DRIVER}: TIMEOUT" break fi + sleep 3 if ethtool ${N} | grep 'Link detected' | grep -q 'no'; then - echo -e "\r${DRIVER}: NOT CONNECTED" + TEXT+="\n ${DRIVER}: \ZbIP: NOT CONNECTED | MAC: ${MAC}\Zn" break fi + COUNT=$((${COUNT} + 3)) done done