2015-03-09 13:44:43 +01:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
logfile=${logfile:-/var/log/vsftpd.log}
|
2008-03-06 04:58:22 +01:00
|
|
|
|
|
|
|
if [ "$1" = "autoconf" ]; then
|
2015-03-09 13:44:43 +01:00
|
|
|
if [ -f "${logfile}" ]; then
|
|
|
|
echo yes
|
|
|
|
exit 0
|
|
|
|
else
|
|
|
|
echo no
|
|
|
|
exit 1
|
|
|
|
fi
|
2008-03-06 04:58:22 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$1" = "config" ]; then
|
2015-03-09 13:44:43 +01:00
|
|
|
cat <<EOF
|
|
|
|
graph_title vsftpd Server
|
|
|
|
graph_args --base 1000 -l 0
|
|
|
|
graph_vlabel Requests
|
|
|
|
graph_category ftp
|
|
|
|
ftp_c.label connections
|
|
|
|
ftp_c.type DERIVE
|
|
|
|
ftp_c.min 0
|
|
|
|
ftp_sl.label successful_logins
|
|
|
|
ftp_sl.type DERIVE
|
|
|
|
ftp_sl.min 0
|
|
|
|
ftp_fl.label failed_logins
|
|
|
|
ftp_fl.type DERIVE
|
|
|
|
ftp_fl.min 0
|
|
|
|
ftp_su.label successful_uploads
|
|
|
|
ftp_su.type DERIVE
|
|
|
|
ftp_su.min 0
|
|
|
|
ftp_fu.label failed_uploads
|
|
|
|
ftp_fu.type DERIVE
|
|
|
|
ftp_fu.min 0
|
|
|
|
ftp_sd.label successful_downloads
|
|
|
|
ftp_sd.type DERIVE
|
|
|
|
ftp_sd.min 0
|
|
|
|
ftp_fd.label failed_downloads
|
|
|
|
ftp_fd.type DERIVE
|
|
|
|
ftp_fd.min 0
|
|
|
|
ftp_sr.label successful_renames
|
|
|
|
ftp_sr.type DERIVE
|
|
|
|
ftp_sr.min 0
|
|
|
|
ftp_fr.label failed_renames
|
|
|
|
ftp_fr.type DERIVE
|
|
|
|
ftp_fr.min 0
|
|
|
|
ftp_sde.label successful_deletes
|
|
|
|
ftp_sde.type DERIVE
|
|
|
|
ftp_sde.min 0
|
|
|
|
ftp_fde.label failed_deletes
|
|
|
|
ftp_fde.type DERIVE
|
|
|
|
ftp_fde.min 0
|
|
|
|
EOF
|
|
|
|
exit 0
|
2008-03-06 04:58:22 +01:00
|
|
|
fi
|
|
|
|
|
2015-03-09 13:44:43 +01:00
|
|
|
if [ -f "${logfile}" ]; then
|
|
|
|
awk '
|
|
|
|
BEGIN {
|
|
|
|
counts["ftp_c"] = 0;
|
|
|
|
counts["ftp_sl"] = 0;
|
|
|
|
counts["ftp_fl"] = 0;
|
|
|
|
counts["ftp_su"] = 0;
|
|
|
|
counts["ftp_fu"] = 0;
|
|
|
|
counts["ftp_sd"] = 0;
|
|
|
|
counts["ftp_fd"] = 0;
|
|
|
|
counts["ftp_sr"] = 0;
|
|
|
|
counts["ftp_fr"] = 0;
|
|
|
|
counts["ftp_sde"] = 0;
|
|
|
|
counts["ftp_fde"] = 0;
|
|
|
|
}
|
|
|
|
/CONNECT/ { counts["ftp_c"]++; next; }
|
|
|
|
/OK LOGIN/ { counts["ftp_sl"]++; next; }
|
|
|
|
/FAIL LOGIN/ { counts["ftp_fl"]++; next; }
|
|
|
|
/OK UPLOAD/ { counts["ftp_su"]++; next; }
|
|
|
|
/FAIL UPLOAD/ { counts["ftp_fu"]++; next; }
|
|
|
|
/OK DOWNLOAD/ { counts["ftp_sd"]++; next; }
|
|
|
|
/FAIL DOWNLOAD/ { counts["ftp_fd"]++; next; }
|
|
|
|
/OK RENAME/ { counts["ftp_sr"]++; next; }
|
|
|
|
/FAIL RENAME/ { counts["ftp_fr"]++; next; }
|
|
|
|
/OK DELETE/ { counts["ftp_sde"]++; next; }
|
|
|
|
/FAIL DELETE/ { counts["ftp_fde"]++; next; }
|
|
|
|
END {
|
|
|
|
for (idx in counts) {
|
|
|
|
printf "%s.value %d\n", idx, counts[idx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
' "${logfile}"
|
|
|
|
else
|
|
|
|
cat <<EOF
|
|
|
|
ftp_c.value U
|
|
|
|
ftp_sl.value U
|
|
|
|
ftp_fl.value U
|
|
|
|
ftp_su.value U
|
|
|
|
ftp_fu.value U
|
|
|
|
ftp_sd.value U
|
|
|
|
ftp_fd.value U
|
|
|
|
ftp_sr.value U
|
|
|
|
ftp_fr.value U
|
|
|
|
ftp_sde.value U
|
|
|
|
ftp_fde.value U
|
|
|
|
EOF
|
|
|
|
fi
|