Analizzare i transfer log (xferlog) di proftpd

Proftpd traccia qualsiasi operazione nel file di log denominato xferlog. In effetti molti altri demoni FTP scrivono i log in un file con lo stesso nome e adottando lo stesso formato, quindi questa tip può interessare anche chi utilizza, ad esempio, Wu-Ftpd o altri FTP standard BSD.

Il file xferlog si trova di solito in una delle seguenti directory:

/var/log
/var/log/proftpd/xferlog
/var/www/vhosts/{DOMAIN}/statistics/logs/xferlog_regular*

L’ultimo caso particolare riguarda solo i server amministrati con Plesk.

L’ultimo carattere riportato in ogni riga del xferlog mostra il modo in cui si è completato il trasferimento. Se il carattere è “c” significa che l’operazione si è completata con successo; se il carattere è “i” significa – al constrario – che l’operazione non è stata copmpletata e il trasferimento ha avuto pertanto esito negativo.

Questo comando restituisce tutti i trasferimenti incompleti:

egrep "i$" /path/to/xferlog

I tre caratteri che seguono il nome del file rappresentano nell’ordine:

  1. il tipo di trasferimento (a=ascii, b=binary)
  2. ogni eventuale azione particolare intrapresa (di norma viene riportato il carattere “_” che corrisponde a “nessuna azione”)
  3. la direzione del trasferimento (o=outgoing, i=incoming, d=deleted)

Per estrarre – ad esempio – una lista di tutti i file uploadati con successo:

awk '($12 ~ /^i$/ && $NF ~ /^c$/){print $9}' /var/log/proftpd/xferlog

Al contrario, per estrarre una lista di tutti i file il cui upload è fallito:

awk '($12 ~ /^i$/ && $NF ~ /^i$/){print $9}' /var/log/proftpd/xferlog

Condivido
2 Commenti
  • ver
    Ottobre 11, 2008

    Su un server web con sist. operativo Centos e apache e php
    ci sono file di log che registrano
    – le azioni socket del php che invia email o dati ad altri server o client ?
    – le azione tipo fsckopen
    – le email inviate dal php

    in modo da poter monitorare tutto ciò:ip, port etc a cui sono inviati i dati ?

    Oppure serve un software apposito?

  • Ivan Agliardi
    Ottobre 13, 2008

    Tutti gli eventi di cui mi parli vengono loggati correttamente dal sistema (dipende ovviamente dal livello di logging che hai impostato sul tuo server, ad esempio nel file php.ini) ma la cosa che mi sento di raccomandarti caldamente è quella di gestire queste informazioni in maniera attiva, loggando tutto in un file specifico o in una tabella del tuo db. Questo ti permette infatti di avere log omogenei anche in caso di migrazione ad altra piattaforma e – soprattutto – di non dover andare a cercare le informazioni che ti servono pescandole da enormi file di log che contengono grandi volumi di informazioni del tutto superflue (almeno per quanto riguarda la tua applicazione).

    Spero di esserti stato utile 😉

    Ciao! Ivan

Leave a comment