#! /bin/sh # # Fail2Ban init.d file - to be launched on boot # # Written by Miquel van Smoorenburg . # Modified for Debian # by Ian Murdock . # Adjusted for Fail2Ban # by Yaroslav Halchenko . # # Version: $Id$ # export PATH="${PATH:+$PATH:}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" DAEMON=/usr/bin/fail2ban NAME=fail2ban DESC=fail2ban PIDFILE=/var/run/$NAME.pid test -x $DAEMON || exit 0 # Include fail2ban defaults if available if [ -f /etc/default/fail2ban ] ; then . /etc/default/fail2ban fi DAEMON_OPTS=$FAIL2BAN_OPTS set -e case "$1" in start) echo -n "Starting $DESC: " if $0 status >/dev/null then ( $0 status ) exit 1 fi [ -f $PIDFILE ] && [ ! -d /proc/`cat $PIDFILE` ] && rm -f $PIDFILE start-stop-daemon --start --quiet --pidfile $PIDFILE \ --exec $DAEMON -- $DAEMON_OPTS echo ".done" ;; stop) echo -n "Stopping $DESC: " ( $0 status >/dev/null ) case "$?" in 0) fail2banpid=`cat $PIDFILE` ;; 3) echo "done"; exit 0;; *) ( $0 status ) echo "Not stopping fail2ban" exit 1 esac start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE maxsecs=30 i=0 while [ -f $PIDFILE ] && [ -d /proc/$fail2banpid ] \ && [ $i -le $maxsecs ]; do echo -n "." sleep 1 i=$(($i+1)) done if [ $i -eq $maxsecs ]; then echo "ERROR: Fail2ban failed to stop properly. Tail of the log file is" tail /var/log/fail2ban.log exit 1 fi echo "done" ;; restart|force-reload) echo -n "Restarting $DESC: " ( $0 stop ) sleep 1 $0 start ;; status) echo -n "Status of $DESC: " if [ ! -e "$PIDFILE" ]; then echo "$NAME is not running." exit 3 fi if [ ! -r "$PIDFILE" ]; then echo "$PIDFILE not readable, status of $NAME unknown." exit 4 fi if [ -d /proc/`cat "$PIDFILE"` ]; then echo "$NAME is running." exit 0 else echo "$NAME is not running but $PIDFILE exists." exit 1 fi ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|force-reload|status}" >&2 exit 1 ;; esac exit 0