[Ciotoflow] Condividere files senza samba utilizzando Python

Delete this message

Reply to this message
Author: Kbyte
Date:  
To: Flussi di ciotia.
Subject: [Ciotoflow] Condividere files senza samba utilizzando Python
Buongiorno! :P

Senza che spammo una cosa chiuritosa che ho scritto sul mio blog, vi
copio e incollo direttamente l'articolo qui in lista .P Ovviamente
penso che alcuni di voi già conoscono questo trick.

Un comune dialogo tra colleghi di lavoro:

A – Mi passi la discografia di Moana Pozzi (ebbene si, potete non
crederci, ma è anche una cantante)?
B – Certo!
A – Dai condividimi la cartella.

Da utente Linux questa frase mi fa salire un brivido lungo la schiena,
perché l’utente medio considera le maledette cartelle condivise di
windows l’unico modo per scambiare i files. E installare Samba sul mio
computer non esiste proprio, visto che non ho la minima intenzione di
ricevere e generare una valanga di pacchetti inutili in broadcast per
far parte di un inutile dominio/workgroup.

Sono un misantropo, è una cosa ormai nota.

L’alternativa non è migliore, perché si basa sul concetto di far
viaggiare i files per l’intero globo, utilizzando servizi come Dropbox
o simili con velocità di trasferimento misere, quando la persona a
cui dobbiamo dare la preziosa discografia è alla scrivania accanto.

Ma la risposta è nel passato: FTP.

Tutti gli ambienti desktop, compreso Windows, sanno come utilizzare
questo arcano protocollo, ma ci serve un server ftp… grossa rottura di
scatole per una semplice condivisione (chi ne ha configurato uno come
si deve sa di cosa parlo). In fondo io cerco una soluzione che:

- Sia eseguibile da utente
- Sia chrootato nella directory che voglio condividere
- Non necessiti la creazione di utenti e menate varie

La risposta?

PYTHON

Utilizzando la libreria pyftpdlib bastano meno di dieci righe di codice:

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer

authorizer = DummyAuthorizer()
authorizer.add_anonymous('/home/kbyte/Musica/MoanaPozzi')

handler = FTPHandler
handler.authorizer = authorizer

server = FTPServer(('*', 2121), handler)
server.serve_forever()

In questo modo abbiamo creato un server ftp anonimo sulla porta 2121
per condividere la cartella /home/kbyte/Musica/MoanaPozzi.

Se non vogliamo l’accesso anonimo, possiamo sostituire la sesta riga
con la seguente:

authorizer.add_user('fandimoana', 'password',
'/home/kbyte/Musica/MoanaPozzi', perm='elr')

Buon appetito!


--
| /
| \Byte - Andrea Briganti

Blog: http://kbyte.snowpenguin.org
Museo archeologia informatica: http://www.verdebinario.org