113 lines
3.1 KiB
Plaintext
113 lines
3.1 KiB
Plaintext
|
#! /bin/bash
|
||
|
|
||
|
# Copyright (C) 2008 Joey Schulze <joey@infodrom.org>
|
||
|
#
|
||
|
# This program is free software; you can redistribute it and/or modify
|
||
|
# it under the terms of the GNU General Public License as published by
|
||
|
# the Free Software Foundation; version 2 dated June, 1991.
|
||
|
#
|
||
|
# This program is distributed in the hope that it will be useful,
|
||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
# GNU General Public License for more details.
|
||
|
#
|
||
|
# You should have received a copy of the GNU General Public License
|
||
|
# along with this program; if not, write to the Free Software
|
||
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
|
||
|
|
||
|
# Source: http://www.infodrom.org/Infodrom/tools/munin.html
|
||
|
|
||
|
# Supported configuration:
|
||
|
#
|
||
|
# [vsftpd-rel]
|
||
|
# user root
|
||
|
# env.logfile /var/log/vsftpd.log
|
||
|
# env.logtail /usr/bin/logtail
|
||
|
|
||
|
PROGNAME=vsftpd
|
||
|
STATEDIR=/var/lib/munin/plugin-state
|
||
|
|
||
|
LOGFILE=${logfile:-/var/log/vsftpd.log}
|
||
|
LOGTAIL=${logtail:-`which logtail`}
|
||
|
|
||
|
OFFSET=${STATEDIR}/${PROGNAME}.offset
|
||
|
STATE=${STATEDIR}/${PROGNAME}.state
|
||
|
PIVOT=${STATEDIR}/${PROGNAME}.pivot
|
||
|
|
||
|
|
||
|
install_ok()
|
||
|
{
|
||
|
tempfile=$(which tempfile)
|
||
|
if [ ! -r ${LOGFILE} -o \
|
||
|
-z "${LOGTAIL}" -o ! -x "${LOGTAIL}" -o \
|
||
|
-z "${tempfile}" -o ! -x "${tempfile}" ]
|
||
|
then
|
||
|
return 1
|
||
|
fi
|
||
|
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
if [ "$1" = "autoconf" ]
|
||
|
then
|
||
|
tmpfile=`which tempfile`
|
||
|
if install_ok
|
||
|
then
|
||
|
echo yes
|
||
|
exit 0
|
||
|
else
|
||
|
echo no
|
||
|
exit 1
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
if [ "$1" = "config" ]
|
||
|
then
|
||
|
echo 'system.type ABSOLUTE'
|
||
|
echo 'graph_title Very Secure FTP Server'
|
||
|
echo 'graph_vlabel Requests'
|
||
|
echo 'graph_category FTP'
|
||
|
echo 'ftp_conn.label connections'
|
||
|
echo 'ftp_loginok.label successful logins'
|
||
|
echo 'ftp_loginfail.label failed logins'
|
||
|
echo 'ftp_uploadok.label successful uploads'
|
||
|
echo 'ftp_uploadfail.label failed uploads'
|
||
|
echo 'ftp_downloadok.label successful downloads'
|
||
|
echo 'ftp_downloadfail.label failed downloads'
|
||
|
echo 'ftp_deleteok.label successful deletes'
|
||
|
echo 'ftp_deletefail.label failed deletes'
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
test install_ok || exit 1
|
||
|
|
||
|
touch -d now-5minutes+30seconds $PIVOT
|
||
|
TEMP=`tempfile`
|
||
|
trap "rm -f ${PIVOT} ${TEMP}" INT EXIT
|
||
|
|
||
|
test -n "$TEMP" -a -w "$TEMP" || exit 1
|
||
|
|
||
|
if [ ! -s ${OFFSET} ]
|
||
|
then
|
||
|
$LOGTAIL ${LOGFILE} ${OFFSET} > ${TEMP}
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
if [ $STATE -ot $PIVOT ]
|
||
|
then
|
||
|
$LOGTAIL ${LOGFILE} ${OFFSET} > ${TEMP}
|
||
|
echo -n > ${STATE}
|
||
|
|
||
|
echo "ftp_conn.value $(grep 'CONNECT' ${TEMP} | wc -l)" >> $STATE
|
||
|
echo "ftp_loginok.value $(grep 'OK LOGIN' ${TEMP} | wc -l)" >> $STATE
|
||
|
echo "ftp_loginfail.value $(grep 'FAIL LOGIN' ${TEMP} | wc -l)" >> $STATE
|
||
|
echo "ftp_uploadok.value $(grep 'OK UPLOAD' ${TEMP} | wc -l)" >> $STATE
|
||
|
echo "ftp_uploadfail.value $(grep 'FAIL UPLOAD' ${TEMP} | wc -l)" >> $STATE
|
||
|
echo "ftp_downloadok.value $(grep 'OK DOWNLOAD' ${TEMP} | wc -l)" >> $STATE
|
||
|
echo "ftp_downloadfail.value $(grep 'FAIL DOWNLOAD' ${TEMP} | wc -l)" >> $STATE
|
||
|
echo "ftp_deleteok.value $(grep 'OK DELETE' ${TEMP} | wc -l)" >> $STATE
|
||
|
echo "ftp_deletefail.value $(grep 'FAIL DELETE' ${TEMP} | wc -l)" >> $STATE
|
||
|
fi
|
||
|
|
||
|
cat $STATE
|