Skip to content

Commit 1dcf62b

Browse files
authored
Merge pull request #161 from pi-hole/new/IPv4_ADDR
Improve IPv4/6 address determination
2 parents 19154fc + 775fe78 commit 1dcf62b

File tree

1 file changed

+38
-13
lines changed

1 file changed

+38
-13
lines changed

padd.sh

+38-13
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ LC_NUMERIC=C
1717
############################################ VARIABLES #############################################
1818

1919
# VERSION
20-
padd_version="v3.5.1"
20+
padd_version="v3.6"
2121

2222
# DATE
2323
today=$(date +%Y%m%d)
@@ -277,8 +277,33 @@ GetSystemInformation() {
277277
}
278278

279279
GetNetworkInformation() {
280-
# Get pi IP address, hostname and gateway
281-
pi_ip_address=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/')
280+
# Get pi IPv4 address
281+
readarray -t pi_ip4_addrs <<< "$(ip addr | grep 'inet ' | grep -v '127.0.0.1/8' | awk '{print $2}' | cut -f1 -d'/')"
282+
if [ ${#pi_ip4_addrs[@]} -eq 0 ]; then
283+
# No IPv4 address available
284+
pi_ip4_addr="N/A"
285+
elif [ ${#pi_ip4_addrs[@]} -eq 1 ]; then
286+
# One IPv4 address available
287+
pi_ip4_addr="${pi_ip4_addrs[0]}"
288+
else
289+
# More than one IPv4 address available
290+
pi_ip4_addr="${pi_ip4_addrs[0]}+"
291+
fi
292+
293+
# Get pi IPv6 address
294+
readarray -t pi_ip6_addrs <<< "$(ip addr | grep 'inet6 ' | grep -v '::1/128' | awk '{print $2}' | cut -f1 -d'/')"
295+
if [ ${#pi_ip6_addrs[@]} -eq 0 ]; then
296+
# No IPv6 address available
297+
pi_ip6_addr="N/A"
298+
elif [ ${#pi_ip6_addrs[@]} -eq 1 ]; then
299+
# One IPv6 address available
300+
pi_ip4_addr="${pi_ip6_addrs[0]}"
301+
else
302+
# More than one IPv6 address available
303+
pi_ip6_addr="${pi_ip6_addrs[0]}+"
304+
fi
305+
306+
# Get hostname and gateway
282307
pi_hostname=$(hostname)
283308
pi_gateway=$(ip r | grep 'default' | awk '{print $3}')
284309

@@ -646,41 +671,41 @@ PrintNetworkInformation() {
646671
if [ "$1" = "pico" ]; then
647672
CleanEcho "${bold_text}NETWORK ============${reset_text}"
648673
CleanEcho " Hst: ${pi_hostname}"
649-
CleanEcho " IP: ${pi_ip_address}"
674+
CleanEcho " IP: ${pi_ip4_addr}"
650675
CleanEcho " DHCP ${dhcp_check_box} IPv6 ${dhcp_ipv6_check_box}"
651676
elif [ "$1" = "nano" ]; then
652677
CleanEcho "${bold_text}NETWORK ================${reset_text}"
653678
CleanEcho " Host: ${pi_hostname}"
654-
CleanEcho " IPv4: ${IPV4_ADDRESS}"
679+
CleanEcho " IP: ${pi_ip4_addr}"
655680
CleanEcho " DHCP: ${dhcp_check_box} IPv6: ${dhcp_ipv6_check_box}"
656681
elif [ "$1" = "micro" ]; then
657682
CleanEcho "${bold_text}NETWORK ======================${reset_text}"
658683
CleanEcho " Host: ${full_hostname}"
659-
CleanEcho " IPv4: ${IPV4_ADDRESS}"
684+
CleanEcho " IP: ${pi_ip4_addr}"
660685
CleanEcho " DHCP: ${dhcp_check_box} IPv6: ${dhcp_ipv6_check_box}"
661686
elif [ "$1" = "mini" ]; then
662687
CleanEcho "${bold_text}NETWORK ================================${reset_text}"
663688
CleanPrintf " %-9s%-19s\e[0K\\n" "Host:" "${full_hostname}"
664-
CleanPrintf " %-9s%-19s\e[0K\\n" "IPv4:" "${IPV4_ADDRESS}"
689+
CleanPrintf " %-9s%-19s\e[0K\\n" "IP:" "${pi_ip4_addr}"
665690
CleanPrintf " %-9s%-10s\e[0K\\n" "DNS:" "${dns_information}"
666691

667692
if [[ "${DHCP_ACTIVE}" == "true" ]]; then
668693
CleanPrintf " %-9s${dhcp_heatmap}%-10s${reset_text} %-9s${dhcp_ipv6_heatmap}%-10s${reset_text}\e[0K\\n" "DHCP:" "${dhcp_status}" "IPv6:" ${dhcp_ipv6_status}
669694
fi
670695
elif [ "$1" = "tiny" ]; then
671696
CleanEcho "${bold_text}NETWORK ============================================${reset_text}"
672-
CleanPrintf " %-10s%-16s %-8s%-16s\e[0K\\n" "Hostname:" "${full_hostname}" "IPv4:" "${IPV4_ADDRESS}"
673-
CleanPrintf " %-10s%-39s\e[0K\\n" "IPv6:" "${IPV6_ADDRESS}"
697+
CleanPrintf " %-10s%-16s %-8s%-16s\e[0K\\n" "Hostname:" "${full_hostname}" "IP: " "${pi_ip4_addr}"
698+
CleanPrintf " %-6s%-39s\e[0K\\n" "IPv6:" "${pi_ip6_addr}"
674699
CleanPrintf " %-10s%-16s %-8s%-16s\e[0K\\n" "DNS:" "${dns_information}" "DNSSEC:" "${dnssec_heatmap}${dnssec_status}${reset_text}"
675700

676701
if [[ "${DHCP_ACTIVE}" == "true" ]]; then
677702
CleanPrintf " %-10s${dhcp_heatmap}%-16s${reset_text} %-8s${dhcp_ipv6_heatmap}%-10s${reset_text}\e[0K\\n" "DHCP:" "${dhcp_status}" "IPv6:" ${dhcp_ipv6_status}
678703
CleanPrintf "%s\e[0K\\n" "${dhcp_info}"
679-
fi
704+
fi
680705
elif [[ "$1" = "regular" || "$1" = "slim" ]]; then
681706
CleanEcho "${bold_text}NETWORK ===================================================${reset_text}"
682-
CleanPrintf " %-10s%-19s %-10s%-19s\e[0K\\n" "Hostname:" "${full_hostname}" "IPv4:" "${IPV4_ADDRESS}"
683-
CleanPrintf " %-10s%-19s\e[0K\\n" "IPv6:" "${IPV6_ADDRESS}"
707+
CleanPrintf " %-10s%-19s %-10s%-19s\e[0K\\n" "Hostname:" "${full_hostname}" "IP:" "${pi_ip4_addr}"
708+
CleanPrintf " %-6s%-19s\e[0K\\n" "IPv6:" "${pi_ip6_addr}"
684709
CleanPrintf " %-10s%-19s %-10s%-19s\e[0K\\n" "DNS:" "${dns_information}" "DNSSEC:" "${dnssec_heatmap}${dnssec_status}${reset_text}"
685710

686711
if [[ "${DHCP_ACTIVE}" == "true" ]]; then
@@ -690,7 +715,7 @@ PrintNetworkInformation() {
690715
else
691716
CleanEcho "${bold_text}NETWORK =======================================================================${reset_text}"
692717
CleanPrintf " %-10s%-19s\e[0K\\n" "Hostname:" "${full_hostname}"
693-
CleanPrintf " %-10s%-19s %-10s%-29s\e[0K\\n" "IPv4 Adr:" "${IPV4_ADDRESS}" "IPv6 Adr:" "${IPV6_ADDRESS}"
718+
CleanPrintf " %-6s%-19s %-10s%-29s\e[0K\\n" "IPv4:" "${pi_ip4_addr}" "IPv6:" "${pi_ip6_addr}"
694719
CleanEcho "DNS ==========================================================================="
695720
CleanPrintf " %-10s%-39s\e[0K\\n" "Servers:" "${dns_information}"
696721
CleanPrintf " %-10s${dnssec_heatmap}%-19s${reset_text} %-20s${conditional_forwarding_heatmap}%-9s${reset_text}\e[0K\\n" "DNSSEC:" "${dnssec_status}" "Conditional Fwding:" "${conditional_forwarding_status}"

0 commit comments

Comments
 (0)