Archivio della categoria 'Open Source'

Analizzare i transfer log (xferlog) di proftpd

Debian, Open Source, Shell, Sistema, Tips & tricks 2 commenti »

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

Condividi:
  • del.icio.us
  • Google
  • Digg
  • Facebook
  • Technorati
  • YahooMyWeb
  • MySpace

Eliminare i vecchi messaggi di posta con uno script (python)

Open Source, Shell, Sistema, Tips & tricks Nessun commento »

Mi è capitato in questi giorni di dover ripulire le mailbox di alcuni clienti svuotandole di tutti i messaggi più vecchi di un certo numero di giorni. Volendo automatizzare questa operazione piuttosto noiosa, ho spulciato fra le mie vecchie cose ed ho ritrovato uno script che assolve egregiamente il compito. Si tratta del programma cleanup-maildir scritto nel linguaggio di programmazione Python e dotato di una serie di funzionalità avanzate per la manipolazione delle Maildir.

Senza entrare troppo nel dettaglio (chi vuole può lanciare il programma con il consueto parametro “-h”) ecco il comando con cui si possono cancellare definitivamente tutti i messaggi più vecchi di 90 giorni:

./cleanup-maildir --age=90 --maildir-root='/home/nomeutente/Maildir' delete ''

Più semplice di così… Di seguito metto a disposizione lo script originale, anche se suggerisco di tenere d’occhio questo link per una versione sempre aggiornata:

Condividi:
  • del.icio.us
  • Google
  • Digg
  • Facebook
  • Technorati
  • YahooMyWeb
  • MySpace

ext3birra e recupero di file cancellati su Linux

Backup, Open Source, Shell, Sistema, Tips & tricks Nessun commento »

Non dovrebbe. Ma può senz’altro succedere che si cancelli un file per errore e lo si voglia recuperare. Ci sono svariati tool a pagamento per effettuare questo tipo di operazione su filesystem FAT32 e NTFS sotto Windows. Anche il nostro pinguino offre più di uno strumento simile per recuperare file cancellati su filesystem EXT3. Uno fra questi è ext3birra, un programma per Linux il cui nome inconfondibilmente italico deriva dal nickname del programmatore che l’ha ideato.

Da quanto si legge sul sito ufficiale del progetto, questo utilissimo programma è stato scritto in soli 5 giorni e permette di recuperare solo file eliminati recentemente (entro le 24 ore).

Ecco come utilizzare il s/w:

  • scaricare il programma da questo indirizzo
  • estrarre i file con il consueto comando:
    tar -jxvf ext3birra*.tar.bz2
  • spostarsi nella cartella così creata e lanciare il comando:
    make && make install
  • terminata la compilazione, per usare ext3birra è sufficiente lanciare il comando:
    ext3birra [device] [output directory]

Ecco ad esempio come si possono recuperare i files precedentemente eliminati dalla partizione sda1, ripristinandoli nella directory temporanea /tmp/recupero_dati/:

ext3birra /dev/sda1 /tmp/recupero_dati/

Condividi:
  • del.icio.us
  • Google
  • Digg
  • Facebook
  • Technorati
  • YahooMyWeb
  • MySpace

Cambiare hostname e mailname su Debian

Debian, Open Source, Tips & tricks Nessun commento »

Per cambiare in maniere definitiva la hostname di una Linux box - l’esempio si riferisce come sempre ad una Debian Etch - non è sufficiente ricorrere al comando `hostname`:

hostname nuovonome

Per evitare che le impostazioni si perdano definitivamente al primo reboot, devi sostituire il nome di host anche nel file:

/etc/hostname

Quando si compie un’operazione di questo tito, 9 volte su 10 si rende necessario anche un aggiornamento del file:

/etc/mailname

Attenzione! Quest’ultimo deve contenere l’intero dominio, nel mio caso:

nuovonome.agliardi.net

Condividi:
  • del.icio.us
  • Google
  • Digg
  • Facebook
  • Technorati
  • YahooMyWeb
  • MySpace

Cambiare lingua con Debian

Debian, Open Source, Tips & tricks Nessun commento »

La scorsa settimana ero da un cliente ed è successa una cosa divertente. Mi sono messo a lavorare su un cluster di server Debian che gestisce le unità disco di backup per tutta la VPN, una macchina piuttosto critica poiché l’azienda ha sedi in tutta Italia e tutto - o quasi - prima o poi deve passare per quel server.

Il tecnico che mi è stato affidato dalla società è un bravo informatico con una solida preparazione sui sistemi server di casa Microsoft. Una sola carenza: conoscenza zero della lingua inglese. Ha studiato francese. Mi chiedo come si possa fare l’informatico senza una conoscenza molto buona della lingua inglese. Ma non importa.

Dato che stavamo uno a fianco all’altro e che non mi andava di fare a traduzione al volo di ogni `man` aperto, ho lanciato il comando:

dpkg-reconfigure locales

ed ho impostato la lingua di sistema su it_IT.UTF-8.

Ebbene, sto ancora cercando di spiegare al tecnico, con cui nel frattempo ho fatto amicizia, come Debian gestisca questo tipo di operazione senza la necessità di riavviare il server. Ma non ce la farò mai: parliamo proprio un’altra lingua io e lui. Non te la prendere! ;)

Condividi:
  • del.icio.us
  • Google
  • Digg
  • Facebook
  • Technorati
  • YahooMyWeb
  • MySpace

Intel vuole Linux sulle automobili

Copincollato, Novità, Open Source Nessun commento »

Detroit (USA) - Con una mossa destinata a dare un’ulteriore spinta alla diffusione del Pinguino sul mercato embedded, Intel e Wind River hanno annunciato lo sviluppo congiunto di una piattaforma open source Linux-based per l’industria automobilistica. Leggi il resto »

Condividi:
  • del.icio.us
  • Google
  • Digg
  • Facebook
  • Technorati
  • YahooMyWeb
  • MySpace

Eliminare pacchetti inutili con deborphan e apt-get

Debian, Open Source, Shell, Tips & tricks Nessun commento »

Con il passare del tempo ogni sistema operativo tende ad accumulare porzioni di codice che - a causa delle normali attività di installazione, upgrade e disinstallazione del software - diviene obsoleto e destinato a non essere mai più utilizzato. Le cosiddette distro “Debian based” mettono a disposizione uno strumento potente e al tempo stesso semplice per risolvere il problema: il programma `deborphan`.

Questa applicazione non fa altro che fornire la lista completa dei pacchetti che non dipendono da nessun altro pacchetto, nemmeno dal core del sistema operativo, la cui presenza è quindi assolutamente superflua:

ziovanja:~# deborphan
opensyncutils
libalut0
libsynaptics0
plib1.8.4c2
libicu36
libxt-java
libportaudio0
libportaudio2
libdivxdecore0-binary
libneon26-gnutls
gstreamer0.10-fluendo-mp3
libhsqldb-java
libavahi-compat-howl0
gstreamer0.10-pitfdll
libdivxencore0-binary
php5-ming
libmdbtools
kdebindings-java
libdvdplay0
bsdtar
libdivx0-binary

Combinando il comando `deborphan` con `apt-get` si può facilmente ottenere la rimozione di tutti i pacchetti inutilizzati:

apt-get remove --purge `deborphan`

Attenzione! Per ovvie ragioni la rimozione di un pacchetto può generare a sua volta nuovi deborphans, quindi è necessario lanciare l’istruzione sopra più volte, fino a che non si ottiene la completa rimozione di tutti i pacchetti orfani. Provare per credere!

Condividi:
  • del.icio.us
  • Google
  • Digg
  • Facebook
  • Technorati
  • YahooMyWeb
  • MySpace

Vulnerabilità openssh per Debian GNU/Linux

Annunci, Bugs, Novità, Open Source 1 commento »

Questa volta la vulnerabilità segnalata dal team Debian Security Advisory è di quelle che devono far correre ai ripari - è il caso di dirlo - anche il sysadmin più easy!

Come raramente accade, questa volta il problema è specifico della distro Linux, anche se si tratta di una conseguenza indiretta del bug non Debian-specific scoperto pochi giorni fa nell’applicazione OpenSSH. Per dirla in poche parole, tutte le chiavi host e user generate per ogni connessione SSH dal pacchetto `openssh` buggato sono completamente inaffidabili, poiché la loro generazione non è avvenuta seguendo un algoritmo di randomizzazione valido e sono pertanto facilmente “prevedibili”.

Per le persone sagge, allego in calce a questo post il comunicato del DSA.

Risolvere il problema è comunque un gioco da ragazzi. È sufficiente lanciare:

apt-get dist-upgrade

e confermare il prompt che riproduco qui di seguito:

Ecco infine il Debian Security Advisory DSA-1576-1. Buona lettura!

Condividi:
  • del.icio.us
  • Google
  • Digg
  • Facebook
  • Technorati
  • YahooMyWeb
  • MySpace

Sincronizzazione mediante `lftp`

Backup, Open Source, Shell, Sistema, Tips & tricks 2 commenti »

Questa è stata una settimana molto, molto dura… ma non posso certo permettere che si concluda senza avere messo online almeno una piccola, miserabile, insignificante tip! Quindi, per fare le cose al volo, vi dico come effettuo la sincronizzazione di un sito Internet che ho elaborato in locale con la copia che è pubblicata nella directory di un certo spazio FTP.

Premetto che questo non è il modo in cui lavoro normalmente: da buon figlio degli anni ‘70 io modifico il codice direttamente online, non in produzione, ma online (bash). Questa settimana mi è capitato però di dover mettere mano al sito Internet di un cliente che ha messo a mia disposizione solo ed esclusivamente il suo account FTP. Quindi ho cominciato a sviluppare una copia locale del suo sito internet e tengo sincronizzata la versione online con un solo, semplice, meraviglioso comando:

lftp -u 'username,passwordftp.mydomain.com -e “set ftp:ssl-protect-data true;mirror –reverse /home/ivan/test test; exit

In altre parole:

  • username: il nome utente dell’account FTP
  • password: la password associata al nome utente dell’account FTP
  • ftp.mydomain.com: la host dell’account FTP
  • /home/ivan/test: la cartella locale (senza slash finale)
  • test: la cartella remota (ovvero quella dove si trova pubblicato il sito Internet)

Da notare l’opzione “set ftp:ssl-protect-data true” che protegge l’autenticazione FTP mediante ssl e l’opzione “mirror –reverse” che permette di sincronizzare in upload anziché in download.

Inutile dire che con lo stesso comando si può mantenere un backup remoto di una directory locale, anche se per cose di questo tipo è consigliabile l’utilizzo di `rsync` che fa tutto attraverso una connessione `ssh`.

Niente di più, niente di meno. Buon week end!

Condividi:
  • del.icio.us
  • Google
  • Digg
  • Facebook
  • Technorati
  • YahooMyWeb
  • MySpace

Spostamento in massa di file in una directory

Open Source, Shell, Sistema, Tips & tricks Nessun commento »

Mi capita spesso di dover spostare in massa una grande quantità di file accomunati da una porzione del nome (quasi sempre l’estensione). Ecco la riga di codice che utilizzo in bash per ottenere - ad esempio - lo spostamento di tutti i file con estensione .gz contenuti nella directory corrente (comprese tutte le subdirectory in essa contenute) nella directory target che si chiama /tmp/prova:

find . -type f -name "*.gz" -exec mv {} /tmp/prova \;

Condividi:
  • del.icio.us
  • Google
  • Digg
  • Facebook
  • Technorati
  • YahooMyWeb
  • MySpace