diff --git a/plugins/other/vsftpd-rel b/plugins/other/vsftpd-rel new file mode 100755 index 00000000..689ae60c --- /dev/null +++ b/plugins/other/vsftpd-rel @@ -0,0 +1,112 @@ +#! /bin/bash + +# Copyright (C) 2008 Joey Schulze +# +# 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