diff --git a/check_fail2ban.sh b/check_fail2ban.sh index ca0f120a5d4d2e7edcf5338f9affd5bdfcc5c65d..22e35bfee4d3cdeb7524059908c0e7872e00c409 100755 --- a/check_fail2ban.sh +++ b/check_fail2ban.sh @@ -64,6 +64,7 @@ fi all_jail_stats=$(sudo /usr/bin/fail2ban-client banned | tr "'" '"' | python3 -c "import collections, json, sys; banned=json.load(sys.stdin); print('\n'.join([f'{name},{len(ips)}' for jails in banned for name, ips in jails.items()]))") +total_banned_ips=0 # IP address banned count for expected jails. for jail in ${jails//,/ }; do if jail_stats=$(grep "$jail" <(echo "$all_jail_stats")); then @@ -74,7 +75,8 @@ for jail in ${jails//,/ }; do status='OK' [[ ${jail_ips} -ge $ips_threshold_warning ]] && status='WARNING' [[ ${jail_ips} -ge $ips_threshold_critical ]] && status='CRITICAL' - output+="${status}: ${jail} jail hold ${jail_ips} IP address\n" + output+="${status}: ${jail} jail hold ${jail_ips} IP addresses\n" + total_banned_ips=$(( $total_banned_ips + $jail_ips )) perf+="${jail_name}=${jail_ips}${ips_scale} " continue @@ -83,6 +85,9 @@ for jail in ${jails//,/ }; do output+="NOK: ${jail} jail is missing\n" done +output+="INFO: fail2ban ban ${total_banned_ips} IP addresses" +perf+="total=${total_banned_ips}${ips_scale} " + # Nagios OK status. exit_code=0 # Nagios WARNING status.