Download ricorsivo via FTP da riga di comando

Capita spesso di dover effettuare il download dell’intera alberatura di una directory da un server (o da un hosting web) via ftp. L’operazione può diventare molto articolata, sopratutto se non si ha la possibilità di effettuare alcuna operazione di archiviazione (tar, zip…). La situazione poi peggiora se non si ha a disposizione un client ftp grafico. Ma vediamo come fare.

Il sistema a mio parere più semplice è utilizzare Wget.

Solitamente questo gestore di download è già installato in molte distribuzioni linux, eventualmente potete installarlo rapidamente (senza troppi problemi) tramite il vostro gestore di pacchetti. Per i più pigri però vi basterà digitare nella vostra shell:
su Ubuntu

apt-get install wget

su Fedora\Centos\RHEL

yum install wget

Adesso, magicamente, possiamo effettuare il download, di tutta una directory e della sua alberatura via FTP

wget -r --level=0 ftp://username:password@host/directory/da/scaricare/

Le opzioni -r e --level=x ci permettono, rispettivamente, di abilitare il download ricorsivo e di specificare la “profondità” a cui wget deve “scavare”.
Spiego meglio: se sotto la cartella da scaricare ci sono altri 4 livelli di alberatura (/dir1/dir2/dir3/dir4), possiamo specificare se andare a scaricare tutta l’alberatura (--level=0) o fermarci al secondo livello (--level=2).
Inutile spendere parole sulla parte username, password e “/directory/da/scaricare/“.

Eventualmente possiamo lanciare il comando in background, e in maniera che resti sempre in esecuzione fino alla sua fine, anche se viene terminata la sessione ssh corrente o viene effettuato il logout dall’utenza correte, effettuando anche il log dell’operazione. Il comando quindi si arrichisce del nohup:

nohup wget -r --level=0 ftp://username:password@host/directory/da/scaricare/ > ./file.log 2>&1 &

L’aggiunta di > ./file.log 2>&1 permette di reindirizzare lo standard output, STDOUT, verso un file a nostra scelta, e lo standard error, STDERR, verso lo standard output (che a sua volta è reindirizzato su un file). Ovviamente possiamo reindirizzare lo STDERR verso un file diverso, o verso “il nulla” (2>/dev/null).
La e commerciale alla fine del comando lancia il comando direttamente in background

TCPDUMP: un coltellino svizzero per sistemisti

Circa cinque anni fa mi sono trovato nelle condizioni, per motivi molto diversi dal lavoro, di dover scovare alcune informazioni (l’ip di provenienza nello specifico) di un flusso di pacchetti anomali che arrivavano su un server che gestivo. La soluzione a tutto è un tool relativamente semplice da usare, ma estremamente potente se usato con intelligenza.
tcpdump non farà altro che rendervi più semplice l’analisi dei pacchetti che, per esempio, vi arrivano su una determinata interfaccia, facciamo conto eth0, indirizzati ad una porta specifica, facciamo 22, e non siano provenienti magari da voi stessi:

tcpdump -i eth0 port 22 and not src 10.10.0.1

il comando precedente cattura i pacchetti in arriva sull’interfaccia eth0, inirizzati alla porta 22 (solitamente quella di default per il protocollo ssh), e non provenienti dall’ip 10.10.0.1 (come potrebbe essere in una VPN).
Seguendo questa logica, e con un po’ di approfondimenti tramite la sua completissima informazione, tcpdump ci consente di creare log perfettamente ritagliati sulle nostre necessità.

Inutile dire che le applicazioni di questo tool sono molteplici, ma non è mia intenzione illustrarvi quali.