Skip to content
Snippets Groups Projects
Commit 026fc7e6 authored by Rémi - Le Filament's avatar Rémi - Le Filament
Browse files
parent aa88b775
No related branches found
No related tags found
No related merge requests found
#!/bin/bash
#########################################################
# Written by Andor Westphal andor.westphal@gmail.com #
# Created: 2013-02-22 (version 1.0) #
# Modified:2013-03-12 (version 1.1) #
# -fix wrong count for output #
# -implement status check #
# #
#checks the count of active jails #
#checks for banned IP's #
#integrated performance data for banned IPs #
#shows banned IP since the last logrotate in long output#
# #
# Modified by Le Filament htpps://le-filament.com : #
# Modified: 2018-10-24 (version 1.2fil) #
# - change reporting to get it in French #
# - display usage with -h option #
# - change fail2ban.sock to fail2ban-server #
# - add AGPL3 license #
# Copyright © 2019 Le Filament #
# License AGPL-3.0 or later #
# (http://www.gnu.org/licenses/agpl.html). #
#########################################################
STATUS_OK="0"
STATUS_WARNING="1"
STATUS_CRITICAL="2"
STATUS_UNKNOWN="3"
ps_state=$(ps aux |grep "fail2ban-server" |grep -v grep| wc -l)
PROGPATH=`dirname $0`
fail2ban_client=$(which fail2ban-client)
jail_count=$($fail2ban_client status|grep "Number" |cut -f 2)
print_usage() {
echo "
Usage:
$PROGPATH/check_fail2ban -h for help (this messeage)
-l </path/to/logfile>
-p </path/to/conffile>
-w <your warnlevel>
-c <your critlevel>
example :
$PROGPATH/check_fail2ban -l /var/log/fail2ban.log -p /etc/fail2ban/jail.conf -w 10 -c 20
"
}
wrong_cpath() {
echo "Is your path to conffile right?"
echo "There is no entry for the bantime"
echo "Normaly its in the jail.conf"
}
if [ "$ps_state" -lt "1" ]; then
echo " ++++ Process is not running ++++"
exit $STATUS_CRITICAL
fi
if [ -z "$1" ];then
echo " ++++ No arguments found ++++"
exit $STATUS_UNKNOWN
fi
while test -n "$1"; do
case "$1" in
-c)
crit=$2
shift
;;
-h)
print_usage
exit $STATUS_UNKNOWN
;;
-l)
lpath=$2
shift
;;
-p)
cpath=$2
shift
;;
-w)
warn=$2
shift
;;
*)
echo "Unknown argument: $1"
print_usage
exit $STATUS_UNKNOWN
;;
esac
shift
done
if [ -z ${crit} ] || [ -z ${lpath} ] || [ -z ${cpath} ] || [ -z ${warn} ]; then
echo " ++++ Missing arguments ++++"
print_usage
exit $STATUS_UNKNOWN
fi
ban=$(grep "Ban " ${lpath}|grep -v Fail| awk -F[\ \:] '{print $10,$8}')
bcount=$(echo "$ban"|grep -v ^\# | grep -v ^$|wc -l)
if [ "$bcount" -ge ${warn} ] && [ "$bcount" -lt ${crit} ]; then
State="Warning"
elif [ "$bcount" -ge ${crit} ];then
State="Critical"
else
State="Ok"
fi
ban_time=$(cat ${cpath} |grep "bantime" |cut -d " " -f4)
#ban_time=$(echo The bantime are ${ban_time} seconds)
long_out=$(cat /var/log/fail2ban.log |grep "Ban "|cut -d " " -f 7,5,2|sed -e 's/$/\\n/g'|grep -v Fail)
OUTPUT=$(echo "Etat : ${State} -- IP Bannies=${bcount} -- Warning : ${warn} -- Critical : ${crit} \n ${jail_count} Services surveillés")
echo $OUTPUT
if [ ${State} == "Warning" ];then
exit ${STATUS_WARNING}
elif [ ${State} == "Critical" ];then
exit ${STATUS_CRITICAL}
elif [ ${State} == "Unknown" ];then
exit ${STATUS_UNKNOWN}
else
exit ${STATUS_OK}
fi
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment