mirror of
https://github.com/pi-hole/pi-hole.git
synced 2024-12-23 21:30:17 +00:00
add ping gateway function
This commit is contained in:
parent
8fd9a22d18
commit
107babe8f4
1 changed files with 57 additions and 6 deletions
|
@ -246,19 +246,69 @@ detect_ip_addresses() {
|
|||
if [[ -n ${ip_addr_list} ]]; then
|
||||
# Local iterator
|
||||
local i
|
||||
echo -e " ${INFO} IPv${protocol}"
|
||||
# display the contents to the user
|
||||
echo -e " ${INFO} Interface: ${PIHOLE_INTERFACE}"
|
||||
for i in "${ip_addr_list[@]}"; do
|
||||
echo -e " ${INFO} $i"
|
||||
echo -e " ${TICK} IPv${protocol} on ${PIHOLE_INTERFACE}"
|
||||
for i in "${!ip_addr_list[@]}"; do
|
||||
echo -e " [$i] ${ip_addr_list[$i]}"
|
||||
done
|
||||
# Othwerwise explain that the protocol is not configured
|
||||
else
|
||||
echo -e " ${CROSS} No IPv${protocol} found on ${PIHOLE_INTERFACE}"
|
||||
echo -e " ${CROSS} No IPv${protocol} found on ${PIHOLE_INTERFACE}"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
ping_gateway() {
|
||||
# First argument should be a 4 or a 6
|
||||
local protocol="${1}"
|
||||
# If the protocol is 6,
|
||||
if [[ ${protocol} == "6" ]]; then
|
||||
# use ping6
|
||||
local cmd="ping6"
|
||||
# and Google's public IPv6 address
|
||||
local public_address="2001:4860:4860::8888"
|
||||
# Otherwise,
|
||||
else
|
||||
# use ping
|
||||
local cmd="ping"
|
||||
# and Google's public IPv4 address
|
||||
local public_address="8.8.8.8"
|
||||
fi
|
||||
|
||||
# Find the default gateway using IPv4 or IPv6
|
||||
local gateway
|
||||
gateway="$(ip -${protocol} route | grep default | cut -d ' ' -f 3)"
|
||||
|
||||
# If the gateway variable has a value (meaning a gateway was found),
|
||||
if [[ -n "${gateway}" ]]; then
|
||||
# Let the user know we will ping the gateway for a response
|
||||
echo -e " ${INFO} Trying three pings on IPv${protocol} gateway at ${gateway}..."
|
||||
# Try to quietly ping the gateway 3 times, with a timeout of 3 seconds, using numeric output only,
|
||||
# on the pihole interface, and tail the last three lines of the output
|
||||
# If pinging the gateway is not successful,
|
||||
if ! ping_cmd="$(${cmd} -q -c 3 -W 3 -n ${gateway} -I ${PIHOLE_INTERFACE} | tail -n 3)"; then
|
||||
# let the user know
|
||||
echo -e " ${CROSS} Gateway did not respond."
|
||||
# and return an error code
|
||||
return 1
|
||||
# Otherwise,
|
||||
else
|
||||
# show a success
|
||||
echo -e " ${TICK} Gateway responded."
|
||||
# and return a success code
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
check_networking() {
|
||||
echo_current_diagnostic "Networking"
|
||||
detect_ip_addresses "4"
|
||||
ping_gateway "4"
|
||||
detect_ip_addresses "6"
|
||||
ping_gateway "6"
|
||||
}
|
||||
|
||||
parse_file() {
|
||||
# Set the first argument passed to tihs function as a named variable for better readability
|
||||
local filename="${1}"
|
||||
|
@ -344,5 +394,6 @@ check_ftl_version
|
|||
diagnose_setup_variables
|
||||
diagnose_operating_system
|
||||
processor_check
|
||||
check_networking
|
||||
check_critical_dependencies
|
||||
check_dnsmasq_d
|
||||
|
|
Loading…
Reference in a new issue