[Python] Rilevare e rimuovere una periferica USB
Massimo Capanni
massimo.capanni a gmail.com
Ven 29 Apr 2011 09:41:49 CEST
Salve a tutti,
sto cercando di realizzare un semplice script per effettuare la copia
automatica di alcuni file da memoria USB a un pc windows.
In pratica per ragioni di difficile accesso ad una postazione, l'operatore
inserisce una memoria USB in una delle porte del pc e automaticamente
vengono copiati dei file nel sistema (un Windows Xp).
In una prima ipotesi ho scritto qualcosa del genere, con l'ipotesi di avere
gia' mappato un disco USB in precedenza:
----------------------------------------------------------
from os import access, F_OK
from time import sleep
from shutil import copy
copiato = False
while 1:
# se il disco mappato e' accessibile ...
if access("W:", F_OK):
# se e' gia' stato copiato non esegue nulla ...
if copiato:
None
else:
# copia il file e lo sovrascrive e imposta 'copiato' True
copy("w:\\pippo.txt", "c:\\")
copiato = True
else:
copiato = False
sleep(30)
----------------------------------------------------------
lo script rimane sempre in esecuzione e se ha accesso al disco W: copia il
file fino a che la memoria non viene tolta e reinserita.
A questo punto, e' chiaro che lo script, molto semplice e spartano, non
effettua la rimozione del dispositivo una volta copiato il file, quindi
l'unica ipotesi e' togliere brutalmente la memoria rischiando di corrompere
i dati. Ho provato a cercare in rete per risolvere questo problema e le
soluzioni sembrano essere un paio: o effettuo la rimozione del dispositivo
richiamando un'applicazione particolare da sistema (tipo ejectusb) o
utilizzo delle chiamate di sistema, il che aumenterebbe notevolmente la
complessita' dello script.
Avete mai avuto a che fare con un problema simile?
max
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20110429/37512864/attachment.html>
Maggiori informazioni sulla lista
Python