[plug] Fedore Core 2 - Awstats - vsFTPd

Vincent Tamet Osg at free.fr
Fri Nov 12 01:49:14 WST 2004


I make i little script to convert vsftpd special format
(xferlog_std_format=NO), and make a awstats.ftp.conf wich work with.

The script /usr/local/bin/vsftpconvert.pl

#!/usr/bin/perl -w
#############################################################################
# Conversion de log du format vsftpd a un format proche de Proftpd          #
# afin de traiter les logs par awstats.                                     #
# 20041111 par OSG : Vincent Tamet // osg at free.fr                           #
#          https://osgpcq.no-ip.com/osg                                     #
# Merci de l'aide de Laurent Paccalet et de Laurent Chevillard.             #
#############################################################################
# Exemple de log Vsftpd
# Tue Sep 21 20:44:12 2004 [pid 27399] CONNECT: Client "192.168.1.1"
# Tue Sep 21 20:44:16 2004 [pid 27398] [vince] OK LOGIN: Client "192.168.1.1"
# Tue Sep 21 20:44:35 2004 [pid 27400] [vince] FAIL MKDIR: Client
"192.168.1.1", "/toto/osg/photos/20030412"
# Tue Sep 21 20:44:51 2004 [pid 27400] [vince] OK MKDIR: Client
"192.168.1.1", "/toto/osg/photos/1"
# Tue Nov 09 03:47:09 2004 [pid 18776] [vince] OK UPLOAD: Client
"194.153.88.6", "/toto.wav", 231116 bytes, 165.92Kbyte/sec
# Le cas suivant n'est pas pris en compte.
# Sat Nov  6 17:02:50 2004 [pid 27890] [vince] OK UPLOAD: Client
"192.168.1.1", "/toto/NINFO.INI", 0.00Kbyte/sec
# Attention le nom de fichier ne doit pas contenir de " ".
#############################################################################
# configuration de vsftpd: /etc/vsftpd.conf
# xferlog_enable=YES
# xferlog_file=/var/log/vsftpd.log
# xferlog_std_format=NO
#############################################################################
# Exemple de log Proftpd (compris par awstats)
# [08/Nov/2004:16:56:44] 192.168.1.1 vince RETR /toto/HIFI/TITRES/toto.wav
OK 1640
#############################################################################
# Configuration de awstats par rapport au awstats.model.conf
#
# LogFile="perl /usr/local/bin/vsftpconvert.pl /var/log/vsftpd.log |"
# LogFile="/var/log/xferlog"
# LogType=F
# LogFormat="%time1 %host %logname %method %url %code %bytesd"
# LogSeparator=" "
# NotPageList=""
# LevelForBrowsersDetection=0
# LevelForOSDetection=0
# LevelForRefererAnalyze=0
# LevelForRobotsDetection=0
# LevelForWormsDetection=0
# LevelForSearchEnginesDetection=0
# ShowLinksOnUrl=0  
# ShowMenu=1
# ShowMonthStats=UVHB
# ShowDaysOfMonthStats=HB
# ShowDaysOfWeekStats=HB
# ShowHoursStats=HB
# ShowDomainsStats=HB
# ShowHostsStats=HBL
# ShowAuthenticatedUsers=HBL
# ShowRobotsStats=0
# ShowEMailSenders=0
# ShowEMailReceivers=0
# ShowSessionsStats=1
# ShowPagesStats=PBEX
# ShowFileTypesStats=HB
# ShowFileSizesStats=0
# ShowBrowsersStats=0
# ShowOSStats=0
# ShowOriginStats=0
# ShowKeyphrasesStats=0
# ShowKeywordsStats=0
# ShowMiscStats=0
# ShowHTTPErrorsStats=0
# ShowSMTPErrorsStats=0
#############################################################################
# programme principal
#############################################################################
$DEBUG=0;
$FICH=$ARGV[0];
open (FICHLOG, $FICH);
while (<FICHLOG>) {
        if
(m{^\w*?\s(.*?)\s+(\d+)\s(\d\d:\d\d:\d\d)\s(\d{4})\s\[.*?\]\s\[(.*?)\]\s(.*?
)\s(.*?):\sClient\s"(.*?)",\s"(.*?)",\
s(\d+)\sbytes.*$})
                {
                        if ("$7" eq "UPLOAD")
                                {
                                        if ($DEBUG) {print ">> UPLOAD\n"};
                                        $MET="STOR";
                                }
                           else {
                                        if ($DEBUG) {print ">> DOWNLOAD\n"};
                                        $MET="RETR";
                                }
                        $URL=$9;
                        $URL=~ tr/ /^/;
                        print "[$2/$1/$4:$3] $8 $5 $MET $URL $6 $10\n";
                }
           else {
                        if
(m{^\w*?\s(.*?)\s+(\d+)\s(\d\d:\d\d:\d\d)\s(\d{4})\s\[.*?\]\s\[(.*?)\]\s(.*?
)\s(.*?):\sClient\s"(.
*?)",\s"(.*?)"$})
                                {
                                        if ($DEBUG) {print ">> MKDIR\n"}
                                        $URL=$9;
                                        $URL=~ tr/ /^/;
                                        print "[$2/$1/$4:$3] $8 $5 $7 $URL
$6 0\n";
                                }
                           else {
                                        if
(m{^\w*?\s(.*?)\s+(\d+)\s(\d\d:\d\d:\d\d)\s(\d{4})\s\[.*?\]\s\[(.*?)\]\s(.*?
)\s(.*
?):\sClient\s"(.*?)"$})
                                                {
                                                        if ($DEBUG) {print
">> LOGIN\n"}
                                                        print
"[$2/$1/$4:$3] $8 $5 $7 / $6 0\n";
                                                }
                                           else {
                                                        if ($DEBUG) {print
">> CORRUPT\n"}
                                                        print "$_";
                                                }
                                }
                }
}
close (FICHLOG);
#############################################################################
# fin du programme
############################################################################
#




More information about the plug mailing list