Salve a tutti,
ho trovato su internet uno script che dovrebbe, come da titolo, copiare automaticamente tutti i file di un USB sul PC quando questa viene inserita.
A questo link potete trovare lo script.

Come potete vedere è uno script in python, che necessita di python alla versione 3 (python3) per funzionare. Tuttavia, una volta che lo eseguo tramite il comando (da root): python3 ./script.py mi dà il seguente errore:

Traceback (most recent call last):
  File "./copy_flash.py", line 29, in <module>
    valid = [dev for dev in new_paths if (identify(dev[0]), dev[1].split("/")[-1]  in excluded) == (True, False)]
  File "./copy_flash.py", line 29, in <listcomp>
    valid = [dev for dev in new_paths if (identify(dev[0]), dev[1].split("/")[-1]  in excluded) == (True, False)]t
  File "./copy_flash.py", line 19, in identify
    output = subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8")
  File "/usr/local/lib/python3.2/subprocess.py", line 522, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['/bin/bash', '-c', 'find /dev/disk -ls | grep /└─sdb1']' returned non-zero exit status 1

Qualcuno mi può aiutare?
Ringrazio in anticipo per le eventuali risposte.

chiesto 16 Dic '15, 17:09

ElyFNV's gravatar image

ElyFNV
0115

modificato 16 Dic '15, 17:57

dadexix86's gravatar image

dadexix86 ♦♦
16.9k816161

Versione di Ubuntu? Quale terminale usi?

Il problema è che la funzione che parsa l'output di lsblk non funziona correttamente con il tuo output.

Metti su pastebin il contenuto del tuo script, l'output di lsblk, uname -a e locale.

(16 Dic '15, 18:04) dadexix86 ♦♦ dadexix86's gravatar image

Ciao e grazie per la risposta! Innanzitutto, vorrei precisarti che non conosco il coding e molti comandi ubuntu sono ancora per me sconosciuti (non ho capito cosa intendi per "locale"). Detto questo La versione è la 15.04.

Ecco quello da te richiesto: http://pastebin.com/YGh52Am9

Grazie ancora!

(16 Dic '15, 19:21) ElyFNV ElyFNV's gravatar image

locale è un comando che devi dare nel terminale. In teoria è scritto in un font diverso...

(16 Dic '15, 20:52) dadexix86 ♦♦ dadexix86's gravatar image

Allora, al comando "locale" mi dà:

http://pastebin.com/DLz4HRPs

Voglio comunque sottolineare il fatto che momentaneamente sto eseguendo questi comandi su Ubuntu 15.04 live da usb. Tuttavia, questo script mi dà lo stesso identico errore anche nel PC di lavoro, dove Ubuntu è installato.

(16 Dic '15, 20:59) ElyFNV ElyFNV's gravatar image

Il tuo file di script non può funzionare perché non gli hai dato un percorso in cui scrivere. Sostituisci alla variabile target_folder il percorso corretto in cui vuoi salvare il tutto (devi avere accesso in scrittura).

Non lanciarlo da root (è inutile e pericoloso lanciare comandi a caso da root, specie se non si è esperti).

Lancialo con

python3 nome_script.py

e non

python3 ./nome_script.py

Per il resto, a me funziona. Su quale versione di Ubuntu sei?

(16 Dic '15, 21:25) dadexix86 ♦♦ dadexix86's gravatar image

Allora. Ho sostituito "target_folder" con "/root/Downloads" e ho eseguito lo script tramite il comando "python3 nome_script.py", ma continua a darmi sempre lo stesso errore.

La mia versione di Ubuntu è la 15.10, utilizzato in live usb (ma ripeto che questo problema me lo dà anche a lavoro, dove Ubuntu è installato, con versione 10.04).

(16 Dic '15, 21:47) ElyFNV ElyFNV's gravatar image

Perché hai la cartella /root/Downloads? Usi root come utente grafico? Questa cosa produce molti, troppi, problemi su Ubuntu.

Ti consiglio di evitare di usare root a meno che non ti sia assolutamente necessario.

(16 Dic '15, 21:58) dadexix86 ♦♦ dadexix86's gravatar image

Ho cambiato la target_folder in "/Downloads/drop", ovviamente creando la cartella "drop" in "Downloads". Ma continua ripetutamente a darmi lo stesso identico errore. Non so più dove mettere le mani.

(16 Dic '15, 22:08) ElyFNV ElyFNV's gravatar image

Dubito che tu abbia una cartella /Downloads... Per esserne certi posta

ls /Downloads
(16 Dic '15, 22:14) dadexix86 ♦♦ dadexix86's gravatar image

Hai ragione! scrivendo "ls /Downloads" ricevo "No such file or directory". Quindi il percorso giusto per indicare allo script dove salvare il contenuto qual è? Pensavo fosse giusto "/Downloads/drop" perché da terminale, per arrivare nella cartella Downloads digito "cd Downloads".

Con cosa mi merita sostituire allora la target_folder?

(16 Dic '15, 22:18) ElyFNV ElyFNV's gravatar image

cd Downloads ok, ma parti dalla cartella ~, non /!

La cosa migliore è che apri nautilus, vai nella cartella che ti interessa, premi Ctrl+L e copi-incolli il percorso.

(16 Dic '15, 22:24) dadexix86 ♦♦ dadexix86's gravatar image

Niente da fare. Ho aperto nautilus, sono andato nella cartella downloads, ho premuto CTRL+L e ho ricevuto il messaggio "/home/ubuntu/Downloads". Ho copiato e incollato il percorso al psoto di target_folder, ho rieseguito lo script tramite "python3 script.py", ma ricevo sempre lo stesso errore.

(16 Dic '15, 22:29) ElyFNV ElyFNV's gravatar image

Postami

file script.py
(16 Dic '15, 22:43) dadexix86 ♦♦ dadexix86's gravatar image

copy_flash.py: Python script, ASCII text executable, with CRLF line terminators

(16 Dic '15, 22:45) ElyFNV ElyFNV's gravatar image

Trovato il problema :) Come hai creato il file?

Perché non deve avere codifica ASCII, deve essere UTF-8 per poter riconoscere i caratteri di cui sopra quando lo dai in pasto a python con il tuo locale utf-8.

Dovresti avere un output tipo

file script.py 
script.py: Python script, UTF-8 Unicode text executable
(16 Dic '15, 22:49) dadexix86 ♦♦ dadexix86's gravatar image

Il file l'ho creato copiano e incollando il codice source in un file di testo su windows 10, salvandolo come copy_flash.py in ASCII (anche se windows me lo ha salvato come copy_flash.py.txt). Su ubuntu poi ho tolto il ".txt" e me lo ha riconosciuto come script python. Tuttavia adesso lo ho salvato in UTF-8 direttamente da ubuntu (che me lo ha salvato subito come copy_flash.py). Tuttavia mi dà sempre lo stesso errore :(

http://pastebin.com/7gZ3gAq8

(16 Dic '15, 23:00) ElyFNV ElyFNV's gravatar image

Ma va bene /home/ubuntu/Downloads come target_folder????

(16 Dic '15, 23:00) ElyFNV ElyFNV's gravatar image

Se hai una cartella /home/ubuntu/Downloads scrivibile dall'utente con cui lanci il programma, sì.

Postami di nuovo l'output di file e il contenuto del file che prelevi con cat.

(16 Dic '15, 23:02) dadexix86 ♦♦ dadexix86's gravatar image

Windows e Linux si parlano male quando si tratta di file di testo. Se devi usare un file di testo su Linux, crealo con Linux. Se devi usarlo con Windows usa Windows.

(16 Dic '15, 23:03) dadexix86 ♦♦ dadexix86's gravatar image
(16 Dic '15, 23:09) ElyFNV ElyFNV's gravatar image

Ho testato lo script su un altro pc con kali linux e funziona perfettamente! Perchè non su ubuntu??? Ho visto che su ubuntu ho la versione 3.4.3+ mentre su kali la versione 3.4.2

(16 Dic '15, 23:16) ElyFNV ElyFNV's gravatar image

E hai sempre lo stesso identico errore in cui c'è └─sdb1 ?

(16 Dic '15, 23:16) dadexix86 ♦♦ dadexix86's gravatar image
(16 Dic '15, 23:20) ElyFNV ElyFNV's gravatar image

L'errore ora è diverso! :)

Abbiamo risolto il problema della codifica ;)

A me su Ubuntu funziona senza problemi, con

$ python3 --version
Python 3.4.3+

Non dare solo l'output, ma anche l'input, quando posti un comando per favore :)

Postami di nuovo lsblk e anche

find /dev/disk -ls | grep /loop0
(16 Dic '15, 23:25) dadexix86 ♦♦ dadexix86's gravatar image

Si! Scusami tanto!!! Non so come si fa a scrivere il codice intero direttamente qui senza andare su pastebin (sono nuovo dei forum).

Allora al comando "find /dev/disk -ls | grep /loop0" non mi risponde nulla... va a capo senza scrivere nulla.

Al comando "lsblk" mi dà il seguente output:

http://pastebin.com/aN2uTHgP

(16 Dic '15, 23:31) ElyFNV ElyFNV's gravatar image

Hai un dispositivo montato in loop, che non viene gestito bene dallo script. A che ti serve esattamente?

(16 Dic '15, 23:34) dadexix86 ♦♦ dadexix86's gravatar image

Non lo so. Sinceramente non so nemmeno cosa sia esattamente un loop device. Credi ci sia un modo per bypassare questo problema? Perché in effetti su Kali linux, dove lo script funziona perfettamente, non c'è questo loop.

(16 Dic '15, 23:36) ElyFNV ElyFNV's gravatar image

Mi vengono due dubbi.

  1. non è che sei da live? :)
  2. quando hai installato, hai installato con partizione criptata e/o UEFI?
(16 Dic '15, 23:39) dadexix86 ♦♦ dadexix86's gravatar image

Si che sono da live! Sto facendo tutto su Ubuntu Live da Usb! Ma il fatto è che questo errore me lo dà anche al lavoro, dove Ubuntu non è Live!

(16 Dic '15, 23:41) ElyFNV ElyFNV's gravatar image

Ma a lavoro ti dà questo errore o quello di prima?

(16 Dic '15, 23:43) dadexix86 ♦♦ dadexix86's gravatar image

Ma forse a lavoro avevo comunque sbagliato a scrivere il percorso della cartella target_folder!!! Quindi magari domani provo col percorso corretto!!! Ti ringrazio tantissimo per tutto l'aiuto che mi stai dando e per la tua pazienza!

(16 Dic '15, 23:44) ElyFNV ElyFNV's gravatar image

Ma a lavoro ti dà questo errore o quello di prima?

(16 Dic '15, 23:44) dadexix86 ♦♦ dadexix86's gravatar image

Non ricordo esattamente l'errore (non capisco quello che scrive, quindi non ricordo se l'errore in sé era diverso). Domani provo, cambiando il path della target_folder. Se funziona bene, altrimenti ti posto l'errore di lavoro.

(16 Dic '15, 23:46) ElyFNV ElyFNV's gravatar image

Sì, ci sentiamo domani :)

Se hai l'errore di cui sopra ricordati che deve essere in utf-8 e poi assicurati che la cartella esista e sia scrivibile! :)

(16 Dic '15, 23:48) dadexix86 ♦♦ dadexix86's gravatar image

Benissimo!!! Grazie mille ancora! Sei stato supergentile!!! Buona serata e a domani!

(16 Dic '15, 23:50) ElyFNV ElyFNV's gravatar image

Qualche news?

(17 Dic '15, 12:10) dadexix86 ♦♦ dadexix86's gravatar image

Ciao! Scusami sono tornato adesso da lavoro! E' funzionato benissimo! Sei stato grande!!! E soprattutto molto gentile! Grazie ancora!

(17 Dic '15, 14:38) ElyFNV ElyFNV's gravatar image

Come faccio a lasciarti un voto?

(17 Dic '15, 14:40) ElyFNV ElyFNV's gravatar image

Scrivo una risposta, poi puoi accettarla e votarla con la manina col pollice in su (o in giù).

(17 Dic '15, 14:53) dadexix86 ♦♦ dadexix86's gravatar image

Ehi, purtroppo non il forum non mi permette di valutarti positivamente, perché dice che non ho abbastanza reputazione. C'è un altro modo per darti un voto? Sei stato gentilissimo... volevo ringraziarti

(17 Dic '15, 15:57) ElyFNV ElyFNV's gravatar image

I problemi sono due.

Con

file script.py

si vede che hai salvato il file in un formato non-UTF-8. Il locale del tuo terminale però è UTF-8 e questo impedisce al programma di riconoscere il simbolo └─, da cui l'errore di parsing nella domanda.

Inoltre la posizione che avevi specificato come destinazione in cui copiare non era scrivibile. È sufficiente impostare la destinazione corretta nello script in

target_folder

e poi si potrà scrivere lì.

coll. permanente

ha risposto 17 Dic '15, 14:57

dadexix86's gravatar image

dadexix86 ♦♦
16.9k816161

La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×208
×63
×48
×28
×7

domanda posta: 16 Dic '15, 17:09

domanda visualizzata: 1,317 volte

ultimo aggiornamento: 17 Dic '15, 15:57

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.