check-connectivity.sh: fix some minor bugs.

This commit is contained in:
Christoph 2020-03-05 00:19:45 +01:00
parent 67b6587917
commit b27b0aa937
2 changed files with 177 additions and 19 deletions

View File

@ -114,9 +114,14 @@ echo_failed(){
echo -e "\033[75G[ \033[1;31mfailed\033[m ]"
fi
}
echo_warn() {
if $terminal ; then
echo -e "\033[75G[ \033[33m\033[1mwarn\033[m ]"
fi
}
echo_skipped() {
if $terminal ; then
echo -e "\033[75G[ \033[33m\033[1mskipped\033[m ]"
echo -e "\033[75G[ \033[37m\033[1mskipped\033[m ]"
fi
}
@ -155,6 +160,19 @@ online() {
}
reboot_system() {
content_type='Content-Type: text/plain;\n charset="utf-8"'
datum="$(date +"%d.%m.%Y")"
from_address="root@$(hostname --long)"
echo -e "To:${ADMIN_EMAIL}\n${content_type}\nSubject:[Connectivity Error] $datum - Reboot System\n$*" | /usr/sbin/sendmail -F "Connectivity Check" -f $from_address $ADMIN_EMAIL
sleep 10
/sbin/reboot -f
}
# ----------
# - Jobhandling
# ----------
@ -212,6 +230,7 @@ fi
# -
DEFAULT_IPV6_PRESENT=true
DEFAULT_CHECK_HOSTS="www.oopen.de www.google.de www.heise.de www.debian.org"
DEFAULT_ADMIN_EMAIL="argus@oopen.de"
echononl "Load Configurations from file '$(basename "$conf_file")'."
if [[ -f "$conf_file" ]]; then
@ -219,12 +238,24 @@ if [[ -f "$conf_file" ]]; then
echo_ok
else
echo_skipped
warn "No configuration file found. Loading script default values.."
msg="No configuration file found. Script default values where loaded.."
if $terminal ; then
echo ""
echo -e " [ \033[33m\033[1mWarn\033[m ] $msg"
echo ""
fi
#if [[ -z "$msg_warn" ]]; then
# msg_warn="$msg"
#else
# msg_warn="$msg_warn
# $msg"
#fi
fi
[[ -z "$IPV6_PRESENT" ]] && IPV6_PRESENT="$DEFAULT_IPV6_PRESENT"
[[ -z "$DNS_CHECK_HOSTS" ]] && DNS_CHECK_HOSTS="$DEFAULT_CHECK_HOSTS"
[[ -z "$HTTPS_CHECK_HOSTS" ]] && HTTPS_CHECK_HOSTS="$DEFAULT_CHECK_HOSTS"
[[ -z "$ADMIN_EMAIL" ]] && ADMIN_EMAIL="$DEFAULT_ADMIN_EMAIL"
blank_line
@ -240,7 +271,13 @@ else
fi
if $LINK_UP ; then
info 'Machine has at least one interface with physical link is up.'
msg="Machine has at least one interface with physical link is up."
if [[ -z "$msg_info" ]]; then
msg_info="$msg"
else
msg_info="$msg_info
$msg"
fi
else
error 'Machine is OFFLINE'
if [[ -f "$RESTART_CHECK_FILE" ]] ; then
@ -253,7 +290,7 @@ else
if [[ $_delta -gt 3900 ]] ; then
touch "$RESTART_CHECK_FILE"
else
/sbin/reboot -f
reboot_system "No interface with physical link is up - Machine is OFFLINE."
fi
else
touch "$RESTART_CHECK_FILE"
@ -283,7 +320,14 @@ echononl "Check if IPv4 default route is set.."
if [[ ${#DEFAULT_GW_4_ARR[@]} -gt 0 ]] ; then
echo_ok
if [[ ${#DEFAULT_GW_4_ARR[@]} -eq 1 ]] ; then
info "Default IPv4 Gateway(s): ${DEFAULT_GW_4_ARR[@]}"
msg="Default IPv4 Gateway(s): ${DEFAULT_GW_4_ARR[@]}"
if [[ -z "$msg_info" ]]; then
msg_info="$msg"
else
msg_info="$msg_info
$msg"
fi
else
msg="Default IPv4 Gateway(s): ${DEFAULT_GW_4_ARR[0]}"
for index in "${!DEFAULT_GW_4_ARR[@]}"; do
@ -291,13 +335,19 @@ if [[ ${#DEFAULT_GW_4_ARR[@]} -gt 0 ]] ; then
msg="$msg
${DEFAULT_GW_4_ARR[$index]}"
done
info "$msg"
if [[ -z "$msg_info" ]]; then
msg_info="$msg"
else
msg_info="$msg_info
$msg"
fi
fi
else
echo_failed
PROBLEM_FOUND=true
error "No default route IPV4is set."
error "No default route IPV4 is set."
if [[ -f "$RESTART_CHECK_FILE" ]] ; then
@ -309,7 +359,7 @@ else
if [[ $_delta -gt 3900 ]] ; then
touch "$RESTART_CHECK_FILE"
else
/sbin/reboot -f
reboot_system "No default route IPv4 is set."
fi
else
touch "$RESTART_CHECK_FILE"
@ -332,7 +382,14 @@ if $IPV6_PRESENT ; then
if [[ ${#DEFAULT_GW_6_ARR[@]} -gt 0 ]] ; then
echo_ok
if [[ ${#DEFAULT_GW_6_ARR[@]} -eq 1 ]] ; then
info "Default IPv6 Gateway(s): ${DEFAULT_GW_6_ARR[@]}"
msg="Default IPv6 Gateway(s): ${DEFAULT_GW_6_ARR[@]}"
if [[ -z "$msg_info" ]]; then
msg_info="$msg"
else
msg_info="$msg_info
$msg"
fi
else
msg="Default IPv6 Gateway(s): ${DEFAULT_GW_6_ARR[0]}"
for index in "${!DEFAULT_GW_6_ARR[@]}"; do
@ -340,12 +397,27 @@ if $IPV6_PRESENT ; then
msg="$msg
${DEFAULT_GW_6_ARR[$index]}"
done
info "$msg"
if [[ -z "$msg_info" ]]; then
msg_info="$msg"
else
msg_info="$msg_info
$msg"
fi
fi
else
echo_failed
echo_warn
warn "No default route IPv6 is set."
msg="No default route IPv6 is set."
if [[ -z "$msg_warn" ]]; then
msg_warn="$msg"
else
msg_warn="$msg_warn
$msg"
fi
fi
fi
@ -365,7 +437,15 @@ if [[ -n "$FIRST_NS" ]] ; then
echo_ok
FOUND_NS_PROBLEM=false
info "Found nameserver \033[1m$FIRST_NS\033[m at '/etc/resolv.conf'."
msg="Found nameserver \033[1m$FIRST_NS\033[m at '/etc/resolv.conf'."
if [[ -z "$msg_info" ]]; then
msg_info="$msg"
else
msg_info="$msg_info
$msg"
fi
else
echo_failed
error "No nameserverentry at '/etc/resolv.conf' found."
@ -402,7 +482,7 @@ if ! $FOUND_NS_PROBLEM ; then
if [[ $_delta -gt 3900 ]] ; then
touch "$RESTART_CHECK_FILE"
else
/sbin/reboot -f
reboot_system "First nameserver located at /etc/resolv.conf does not work properly."
fi
else
touch "$RESTART_CHECK_FILE"
@ -411,11 +491,26 @@ if ! $FOUND_NS_PROBLEM ; then
else
echo_ok
info "Nameserver works as expected."
msg="Nameserver works as expected."
if [[ -z "$msg_info" ]]; then
msg_info="$msg"
else
msg_info="$msg_info
$msg"
fi
fi
else
echo_skipped
warn "Test was not triggert because of nameserver problems.."
msg="Resolver test was not triggert because of nameserver problems.."
if [[ -z "$msg_warn" ]]; then
msg_warn="$msg"
else
msg_warn="$msg_warn
$msg"
fi
fi
@ -423,7 +518,11 @@ fi
# Website reachable?
# ---
FOUND_CHECK_HOST_PROBLEM=true
if ! $FOUND_NS_PROBLEM ; then
FOUND_CHECK_HOST_PROBLEM=true
else
FOUND_CHECK_HOST_PROBLEM=false
fi
# Check if some websites reachable..
#
@ -446,7 +545,14 @@ for _host in $HTTPS_CHECK_HOSTS ; do
esac
else
echo_skipped
warn "Test was not triggert because of nameserver problems.."
msg="Website accessibility test was not triggert because of nameserver problems.."
if [[ -z "$msg_warn" ]]; then
msg_warn="$msg"
else
msg_warn="$msg_warn
$msg"
fi
break
fi
@ -466,12 +572,31 @@ if $FOUND_CHECK_HOST_PROBLEM ; then
if [[ $_delta -gt 3900 ]] ; then
touch "$RESTART_CHECK_FILE"
else
/sbin/reboot -f
reboot_system "No website could be reached."
fi
else
touch "$RESTART_CHECK_FILE"
fi
clean_up 1
else
if ! $FOUND_NS_PROBLEM ; then
msg="Extern Websites are reachable."
if [[ -z "$msg_info" ]]; then
msg_info="$msg"
else
msg_info="$msg_info
$msg"
fi
fi
fi
if [[ -n "$msg_info" ]]; then
info "$msg_info"
fi
if [[ -n "$msg_warn" ]]; then
warn "$msg_warn"
fi

View File

@ -0,0 +1,33 @@
# -------------------------------------------
# - Settings for script check-connectivity.sh
# -------------------------------------------
# - IPV6_PRESENT
# -
# - Possible values: true/false
# -
# - Example:
# - IPV6_PRESENT=false
# -
# - Default value: true
# -
#IPV6_PRESENT=true
# - DNS_CHECK_HOSTS
# -
# - Blank sepatated list of hostnames checked by lokal nameservice simply
# - for their ip-addresses
# -
# - Defaults to: DNS_CHECK_HOSTS="www.oopen.de www.google.com www.heise.de"
# -
#DNS_CHECK_HOSTS="www.oopen.de www.google.com www.heise.de www.debian.org"
# - HTTPS_CHECK_HOSTS
# -
# - Blank sepatated list of websites which will be checked for accessibility
# -
# - Defaults to: HTTPS_CHECK_HOSTS="www.oopen.de www.google.com www.heise.de"
# -
#HTTPS_CHECK_HOSTS="www.oopen.de www.google.com www.heise.de www.debian.org"