Transferul fișierelor utilizând serverul HTTP încorporat al Python

Trasferimento di file utilizzando il server HTTP integrato di Python

⌛ Reading Time: 4 minutes

La necessità di trasferire file su una rete è quella che si presenta spesso. I sistemi GNU / Linux supportano più protocolli e strumenti per farlo, alcuni dei quali sono progettati per la condivisione di file in qualche modo permanente (come SMB, AFP e NFS), mentre altri come Secure Copy (SCP) vengono utilizzati per manuali rapidi e script trasferimenti di file. Tra questi c’è l’HyperText Transfer Protocol (HTTP), il protocollo versatile e onnipresente su cui si basa il World Wide Web.

Python, che è incluso per impostazione predefinita nella maggior parte delle distribuzioni Linux, fornisce semplici server HTTP tramite i moduli “SimpleHTTPServer” e “http.server”. Il primo si trova nella libreria standard di Python 2, mentre il secondo è incluso in Python 3. Questi server HTTP leggeri non richiedono un’installazione separata e possono essere avviati istantaneamente con un singolo comando.

Installazione di Python

Molto probabilmente il tuo sistema include almeno una versione di Python, ma in caso contrario, installa Python 3 utilizzando il tuo gestore di pacchetti nativo.

Ad esempio, su Debian e Ubuntu:

Avvio del server HTTP

Prendere nota dell’indirizzo IP utilizzato dalla macchina mittente.

Scopri quale versione di Python è installata con i seguenti comandi:

Sulla stessa macchina, cambia la tua directory di lavoro con quella contenente i file che stai trasferendo. Sii consapevole del fatto che l’intero contenuto della tua attuale directory di lavoro può essere accessibile a chiunque sulla tua rete (o su Internet se la macchina mittente ha un indirizzo IP pubblico), mentre il server HTTP Python è in esecuzione.

Per esempio:

È ora possibile avviare il server HTTP. Per Python 2.x, usa il modulo SimpleHTTPServer:

O http.server nel caso di Python 3.x:

Entrambe le varianti sono in ascolto sulla porta 8000 per impostazione predefinita, sebbene sia possibile specificare esplicitamente un numero di porta diverso dopo il nome del modulo.

Nota: i privilegi di root sono richiesti se scegli una porta inferiore a 1024.

Download dei file

Sulla macchina ricevente, puoi utilizzare qualsiasi client HTTP per scaricare i tuoi file. Se utilizzi un ambiente grafico, un browser è spesso più conveniente delle utilità della riga di comando. Basta sfogliare http: // IP_ADDRESS: 8000, dove “IP_ADDRESS” è l’indirizzo IP del computer di invio e fare clic sui file desiderati per scaricarli.

Browser di trasferimento Http Python

In alternativa, puoi usare Wget o cURL per recuperare i tuoi file. Dovresti già averne uno o entrambi installati. In caso contrario, suggeriamo di installare Wget, poiché è più facile da usare e supporta il download di intere directory.

Per Debian e Ubuntu:

Per RHEL e CentOS 6/7:

Per Fedora e RHEL / CentOS 8:

Utilizzando Wget

Per scaricare un singolo file con Wget, invoca semplicemente Wget seguito dall’URL del file che desideri scaricare.

Trasferimento Http Python Wget

Puoi anche usare Wget per scaricare ricorsivamente l’intera directory aggiungendo il file -r flag della riga di comando.

Trasferimento Http Python Wget ricorsivo

Utilizzando cURL

Per impostazione predefinita, curl tenta di stampare il contenuto del file sul tuo terminale. Quindi, per salvare invece il file, specificare un nome file con l’estensione -o bandiera.

Python Http Transfer Curl

Conclusione

La funzionalità HTTP nella libreria standard di Python fornisce un modo semplice ma veloce e conveniente per trasferire i file, perfetto per alcuni scenari. Ma tieni presente che poiché si tratta di un semplice HTTP senza crittografia né autenticazione, dovresti fare attenzione a non esporre file sensibili.