Richiesta di copia ad inserimento disco USB

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2842
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: Richiesta di copia ad inserimento disco USB

Messaggio da rai »

in fase di rimozione manuale mi compare la richiesta di password.
È per questo che non mi piace questo modo: dovendo inibire l'automount (e per farlo basta tenere occupato udev con l'esecuzione dello script) montiamo il dispositivo con lo script, cioè come root.
Ma visto che così risolvi il precedente problema, ti suggerisco di modificare il file /etc/fstab per risolvere anche quest'ultima questione. Fai così:

Codice: Seleziona tutto

uuid=$(sudo blkid | awk '/ntfs/{print $2}'|tr -d \")
MNT_PNT="/media/lts/USB-Backup"
echo "$uuid $MNT_PNT ntfs user,noauto,nofail 0 0" | sudo tee -a /etc/fstab
nota che come mount point puoi mettere qualsiasi cosa purchè coincida anche nello script. Per semplicità, NON usare spazi nei nomi di cartelle

lo script diventa così:

Codice: Seleziona tutto

#!/bin/sh
MNT_PNT="/media/lts/USB-Backup" # a tua discrezione

export DISPLAY=:0.0
HDD=`dmesg | tail | awk -F": " '/sd.: sd./{print $2; exit}'`
su lts -c "/usr/bin/zenity --question --title='Backup' --text='Vuoi eseguire il Backup?'"
if [ $? = 0 ]
then
[ -d "$MNT_PNT" ] || su lts -c "mkdir -p \"$MNT_PNT\""
su lts -c "mount /dev/$HDD" # monta come normalUser se $HDD è in /etc/fstab
until mount | grep $HDD; do # aspetta che l'HD sia montato
    sleep 0.1
done
su lts -c "xterm -hold -e  cp \"$MNT_PNT/1\" \"$MNT_PNT/2/\""
fi
# alla fine puoi farlo smontare dallo stesso script
if su lts -c '/usr/bin/zenity --question --title="Copia finita" --text="Smontare il disco ?"'; then
  VOL=${HDD%[0-9]}
  umount -l "$MNT_PNT"  && /usr/bin/udisks --detach /dev/$VOL
  while mount | grep $HDD; do
    sleep .1
  done
  rm -rf "$MNT_PNT"
  echo "message: Ora puoi staccare il disco " | su lts -c '/usr/bin/zenity --notification --listen' &
else # lo lasci montato
  exit
fi
Violence Jack
Prode Principiante
Messaggi: 90
Iscrizione: domenica 11 luglio 2010, 16:15

Re: Richiesta di copia ad inserimento disco USB

Messaggio da Violence Jack »

ho modificato il file fstab copiando i tuoi comandi sul terminale, mi è comparso un nuovo dispositivo sul file manager
ed avviene che all'inserimento della penna usb lo script si avvia chiedendo di eseguire il backup,
se confermo non accade nulla,
eseguendo lo script manualmente da terminale con la penna usb inserita mi vengono dati questi errori:

Codice: Seleziona tutto

mkdir: impossibile creare la directory "/media/lts/USB-Backup": Permesso negato
[mntent]: riga 18 in /etc/fstab non valida
mount: impossibile trovare /dev/sdc1 in /etc/fstab o /etc/mtab
allego il contenuto di fstab

Codice: Seleziona tutto

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=0ce535bb-4630-4f47-b160-a21a737cdc65 /               ext4    errors=remount-ro 0       1
# /dati was on /dev/sda6 during installation
UUID=a107070f-47ea-43d1-b180-5338a53ddfc4 /dati           ext4    defaults        0       2
# /home was on /dev/sda5 during installation
UUID=de5e84af-ee09-49fc-abfa-f67de52ae4b1 /home           ext4    defaults        0       2
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
LABEL=WD_500GB_DATI /mnt/WD_500GB_DATI auto nosuid,nodev,nofail 0 0
LABEL=WD_500GB_Backup /mnt/WD_500GB_Backup auto nosuid,nodev,nofail 0 0
/dev/disk/by-id/usb-Initio_WD1002FBYS-02A6B_0010101650000C86W-0:0-part1 /mnt/usb-Initio_WD1002FBYS-02A6B_0010101650000C86W-0:0-part1 auto nosuid,nodev,nofail,noauto 0 0
LABEL=WD_500GB_DATI
LABEL=WD_500GB_Backup /media/lts/USB-Backup ntfs user,noauto,nofail 0 0
ripetendo lo script da terminale e negando la richiesta di backup mi viene chiesto di voler smontare il disco,
indipendentemente se confermo o nego la richiesta mi compare la penna usb non montata nel file manger
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2842
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: Richiesta di copia ad inserimento disco USB

Messaggio da rai »

Mi spiace, invece dell'UUID ti ho fatto prendere la LABEL :muro: Ho sbagliato perchè con tutte le mie pendrive UUID è il secondo elemento mostrato da blkid.
Quindi per cominciare puoi fare sudo nano /etc/fstab e cancellare le ultime due righe dato che hai già una quantità di altre righe su cui non so pronunciarmi

Purtroppo questo errore, facilmente correggibile, non è l'unico nè il minore:
a leggere qui e il paragrafo seguente pare che le partizioni ntfs possono essere montate solo da root, a meno di una serie di condizioni per le quali non so aiutarti

quindi allo stato delle cose hai due opzioni (non mutuamente esclusive):
1) ritorni alla versione funzionante ma che monta il disco come root (e come root devi smontarlo se non lo fai smontare dallo script)
2) aspetti che qualcuno più esperto ti (ci) spieghi come gestire il tuo backup su ntfs
Violence Jack
Prode Principiante
Messaggi: 90
Iscrizione: domenica 11 luglio 2010, 16:15

Re: Richiesta di copia ad inserimento disco USB

Messaggio da Violence Jack »

pare che le partizioni ntfs possono essere montate solo da root
Inizio a pensare di procurarmi un hdd (magari ne acquisto 1) dedicarlo solo al backup in linux e formattarlo in ext4,
ammesso che una volta formattato in ext4 il problema si risolva,
prima dell'acquisto vorrei essere sicuro che riuscirei a smontarlo senza la richiesta di password, o comunque ad ottenere quello che voglio?
Violence Jack
Prode Principiante
Messaggi: 90
Iscrizione: domenica 11 luglio 2010, 16:15

Re: Richiesta di copia ad inserimento disco USB

Messaggio da Violence Jack »

@rai
pensi che utilizzando un disco formattato in ext4 si potrebbe risolvere il problema della richiesta di password in fase di smontaggio?
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2842
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: Richiesta di copia ad inserimento disco USB

Messaggio da rai »

Scusa non mi è arrivata la notifica del tuo post
Guarda, lo script che ho postato all'inizio di questa discussione (che prevede un formato extN) è in funzione su diversi ubuntu da 12.04 a 14.04.
E comunque non ho mai avuto problemi di quel tipo nemmeno con pendrive formattate FAT32 né con schede fotografiche SD (anche se su queste qualcuno ha risultati diversi)
Violence Jack
Prode Principiante
Messaggi: 90
Iscrizione: domenica 11 luglio 2010, 16:15

Re: Richiesta di copia ad inserimento disco USB

Messaggio da Violence Jack »

Ho provato a fare così

Codice: Seleziona tutto

uuid=$(sudo blkid | awk '/ext4/{print $2}'|tr -d \")
MNT_PNT="/media/lts/USB-Backup"
echo "$uuid $MNT_PNT ext4 user,noauto,nofail 0 0" | sudo tee -a /etc/fstab
al tuo precedente script ho sostituito "ntfs" con "ext4" ma come in precedenza ottengo:

Codice: Seleziona tutto

mkdir: impossibile creare la directory "/media/lts/USB-Backup": Permesso negato
[mntent]: riga 20 in /etc/fstab non valida
[mntent]: riga 21 in /etc/fstab non valida
mount: impossibile trovare /dev/sdc1 in /etc/fstab o /etc/mtab
penso che l'errore come nel precedente caso sia dovuto a questo
rai ha scritto:Mi spiace, invece dell'UUID ti ho fatto prendere la LABEL :muro: Ho sbagliato perchè con tutte le mie pendrive UUID è il secondo elemento mostrato da blkid.
come detto in precedenza sto provando ad utilizzare una penna usb (se funzionerà passero ad un hdd usb) con filesystem ext4,
come dovrei modificare il codice e far prendere UUID anzichè la LABEL e verificarne il funzionamento?
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2842
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: Richiesta di copia ad inserimento disco USB

Messaggio da rai »

non dovresti avere bisogno di mettere il dispositivo in /etc/fstab
Comunque, col dispositivo inserito, posta

Codice: Seleziona tutto

sudo blkid
prima, con ntfs, hai usato un metodo che ti funzionava salvo il fatto che il dispositivo lasciato montato restava di proprietà root
hai già provato a fare la stessa cosa ora col FS ext4? e cioé:

0) ripulisci fstab da ogni riferimento al dispositivo con cui vuoi provare

1) script che viene eseguito dalla tua regola udev

Codice: Seleziona tutto

#!/bin/bash
/percorso/provaUdev &
2) script provaUdev che copia il solito file `1' nella solita cartella `2'

Codice: Seleziona tutto

#!/bin/bash
export DISPLAY=:0.0
HDD=$(dmesg | tail | awk -F": " '/sd.: sd./{print $2; exit}')
su lts -c "/usr/bin/zenity --question --title='Backup' --text='Vuoi eseguire il Backup?'"
if [ $? = 0 ]
then
until mount | grep $HDD; do # aspetta che l'HD sia montato
    sleep 0.1
done
mntPnt=$(mount | awk '$0 ~ device {Mnt=$3} END {print Mnt}' device=$HDD)
su lts -c "xterm -hold -e  cp $mntPnt/1 $mntPnt/2/"
fi
# alla fine fallo smontare dallo stesso script
if su lts -c '/usr/bin/zenity --question --title="Copia finita" --text="Smontare il disco ?"'; then
  VOL=${HDD%[0-9]}
  umount -l /dev/$HDD && /usr/bin/udisks --detach /dev/$VOL
  while mount | grep $HDD; do
    sleep .1
  done
  echo "message: Ora puoi staccare il disco " | su lts -c '/usr/bin/zenity --notification --listen' &
else
  exit
fi
Violence Jack
Prode Principiante
Messaggi: 90
Iscrizione: domenica 11 luglio 2010, 16:15

Re: Richiesta di copia ad inserimento disco USB

Messaggio da Violence Jack »

rai ha scritto:col dispositivo inserito, posta

Codice: Seleziona tutto

sudo blkid
lts@lts-P5K-Deluxe:~$ sudo blkid
[sudo] password for lts:
/dev/sda5: LABEL="WD_500GB_DATI" UUID="12E4464AE4463071" TYPE="ntfs"
/dev/sda6: LABEL="WD_500GB_Backup" UUID="C8F8498CF8497A28" TYPE="ntfs"
/dev/sdb1: UUID="0ce535bb-4630-4f47-b160-a21a737cdc65" TYPE="ext4"
/dev/sdb5: UUID="de5e84af-ee09-49fc-abfa-f67de52ae4b1" TYPE="ext4"
/dev/sdb6: UUID="a107070f-47ea-43d1-b180-5338a53ddfc4" TYPE="ext4"
/dev/sdc1: UUID="a3fbde6d-8249-4b6d-bb0d-4c4053824e36" TYPE="ext4" <------------------- Penna usb in formato ext4 che voglio utilizzare per prova
lts@lts-P5K-Deluxe:~$
0) ripulisci fstab da ogni riferimento al dispositivo con cui vuoi provare
controllato su fstab e non c'è nessun riferimento alla penna USB
2) script provaUdev che copia il solito file `1' nella solita cartella `2'

Codice: Seleziona tutto

#!/bin/bash
export DISPLAY=:0.0
HDD=$(dmesg | tail | awk -F": " '/sd.: sd./{print $2; exit}')
su lts -c "/usr/bin/zenity --question --title='Backup' --text='Vuoi eseguire il Backup?'"
if [ $? = 0 ]
then
until mount | grep $HDD; do # aspetta che l'HD sia montato
    sleep 0.1
done
mntPnt=$(mount | awk '$0 ~ device {Mnt=$3} END {print Mnt}' device=$HDD)
su lts -c "xterm -hold -e  cp $mntPnt/1 $mntPnt/2/"
fi
# alla fine fallo smontare dallo stesso script
if su lts -c '/usr/bin/zenity --question --title="Copia finita" --text="Smontare il disco ?"'; then
  VOL=${HDD%[0-9]}
  umount -l /dev/$HDD && /usr/bin/udisks --detach /dev/$VOL
  while mount | grep $HDD; do
    sleep .1
  done
  echo "message: Ora puoi staccare il disco " | su lts -c '/usr/bin/zenity --notification --listen' &
else
  exit
fi
eseguendo questo script, all'inserimento della penna ext4 lo script viene avviato chiedendo di eseguire lo backup, confermando tale richiesta non avviene nulla,
probabilmente il comando automount viene inibito, infatti il dispositivo non viene visualizzato in nautilus ed il backup non avviene, mentre se si monta manualmente il dispositivo il backup avviene senza problemi

se al contrario non voglio eseguire il backup (cliccando di no alla richiesta) il dispositivo viene visualizzato in nautilus e posso accedere/rimuoverlo normalmente
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2842
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: Richiesta di copia ad inserimento disco USB

Messaggio da rai »

Violence Jack ha scritto:
0) ripulisci fstab da ogni riferimento al dispositivo con cui vuoi provare
controllato su fstab e non c'è nessun riferimento alla penna USB
2) script provaUdev che copia il solito file `1' nella solita cartella `2'

Codice: Seleziona tutto

#!/bin/bash
export DISPLAY=:0.0
HDD=$(dmesg | tail | awk -F": " '/sd.: sd./{print $2; exit}')
su lts -c "/usr/bin/zenity --question --title='Backup' --text='Vuoi eseguire il Backup?'"
if [ $? = 0 ]
then
until mount | grep $HDD; do # aspetta che l'HD sia montato
    sleep 0.1
done
mntPnt=$(mount | awk '$0 ~ device {Mnt=$3} END {print Mnt}' device=$HDD)
su lts -c "xterm -hold -e  cp $mntPnt/1 $mntPnt/2/"
fi
# alla fine fallo smontare dallo stesso script
if su lts -c '/usr/bin/zenity --question --title="Copia finita" --text="Smontare il disco ?"'; then
  VOL=${HDD%[0-9]}
  umount -l /dev/$HDD && /usr/bin/udisks --detach /dev/$VOL
  while mount | grep $HDD; do
    sleep .1
  done
  echo "message: Ora puoi staccare il disco " | su lts -c '/usr/bin/zenity --notification --listen' &
else
  exit
fi
eseguendo questo script, all'inserimento della penna ext4 lo script viene avviato chiedendo di eseguire lo backup, confermando tale richiesta non avviene nulla,
OK ma il punto 1) l'hai fatto ?
rai ha scritto: 1) script che viene eseguito dalla tua regola udev

Codice: Seleziona tutto

#!/bin/bash
/percorso/provaUdev &
Violence Jack
Prode Principiante
Messaggi: 90
Iscrizione: domenica 11 luglio 2010, 16:15

Re: Richiesta di copia ad inserimento disco USB

Messaggio da Violence Jack »

inserita anche la regola ( avevo saltato il passaggio)

Codice: Seleziona tutto

ACTION=="add", KERNEL=="sd?1", ATTRS{serial}=="CCBB1112131128471244268709", SYMLINK+="provaUdev", RUN+="/bin/bash /home/lts/Scrivania/Prova.sh
contenuto di Prova.sh

Codice: Seleziona tutto

#!/bin/bash
/home/lts/Scrivania/ProvaUdev &
Contenuto di ProvaUdev

Codice: Seleziona tutto

#!/bin/bash
export DISPLAY=:0.0
HDD=$(dmesg | tail | awk -F": " '/sd.: sd./{print $2; exit}')
su lts -c "/usr/bin/zenity --question --title='Backup' --text='Vuoi eseguire il Backup?'"
if [ $? = 0 ]
then
until mount | grep $HDD; do # aspetta che l'HD sia montato
    sleep 0.1
done
mntPnt=$(mount | awk '$0 ~ device {Mnt=$3} END {print Mnt}' device=$HDD)
su lts -c "xterm -hold -e  cp $mntPnt/1 $mntPnt/2/"
fi
# alla fine fallo smontare dallo stesso script
if su lts -c '/usr/bin/zenity --question --title="Copia finita" --text="Smontare il disco ?"'; then
  VOL=${HDD%[0-9]}
  umount -l /dev/$HDD && /usr/bin/udisks --detach /dev/$VOL
  while mount | grep $HDD; do
    sleep .1
  done
  echo "message: Ora puoi staccare il disco " | su lts -c '/usr/bin/zenity --notification --listen' &
else
  exit
fi
Avviene che inserendo la penna usb viene correttamente montata ma lo script non si avvia,
facendo partire manualmente da terminale "Prova.sh" ottengo:

Codice: Seleziona tutto

lts@lts-P5K-Deluxe:~$ /home/lts/Scrivania/Prova.sh   
lts@lts-P5K-Deluxe:~$ su: si deve avviare da un terminale
su: si deve avviare da un terminale

lts@lts-P5K-Deluxe:~$ sudo /home/lts/Scrivania/Prova.sh     
[sudo] password for lts: 
lts@lts-P5K-Deluxe:~$ 
/dev/sdc1 on /media/lts/a3fbde6d-8249-4b6d-bb0d-4c4053824e36 type ext4 (rw,nosuid,nodev,uhelper=udisks2)
** (zenity:7839): WARNING **: Error showing notification: Impossibile connettersi: Connessione rifiutata
lo script viene avviato ed esegue correttamente il backup, oltre a smontare il dispositivo
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2842
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: Richiesta di copia ad inserimento disco USB

Messaggio da rai »

Non vorrei che non c'entri il fatto che il tuo sistema usa udisks2.
Sembrerebbe (spero che sia) un problema della regola. Per verificarlo sostituisci
RUN+="/bin/bash /home/lts/Scrivania/Prova.sh con RUN+="/usr/bin/touch /home/lts/Scrivania/daUdev"

se il file non compare sul desktop:
1) disabilita temporaneamente la regola udev (sai già come fare), inserisci l'unità ed esegui subito questi:

Codice: Seleziona tutto

HDD=$(dmesg | tail | awk -F": " '/sd.: sd./{print $2; exit}')
VOL=${HDD%[0-9]}
udevadm info -ap /sys/block/$VOL/$HDD | awk -F\" '/serial}=="[0-9a-zA-Z_]*"/{print $2}'
accertati che l'output corrisponda con il seriale che hai messo

2) togli ACTION="add",

L'errore che riguarda zenity è un problema secondario, poi si vedrà
Violence Jack
Prode Principiante
Messaggi: 90
Iscrizione: domenica 11 luglio 2010, 16:15

Re: Richiesta di copia ad inserimento disco USB

Messaggio da Violence Jack »

rai [url=http://forum.ubuntu-it.org/viewtopic.php?p=4738386#p4738386][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Non vorrei che non c'entri il fatto che il tuo sistema usa udisks2.
Sembrerebbe (spero che sia) un problema della regola. Per verificarlo sostituisci
RUN+="/bin/bash /home/lts/Scrivania/Prova.sh con RUN+="/usr/bin/touch /home/lts/Scrivania/daUdev"

se il file non compare sul desktop:
modificato la regola all'inserimento della penna viene creato il file daUdev sulla scrivania
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2842
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: Richiesta di copia ad inserimento disco USB

Messaggio da rai »

Dato che la regola è corretta e che lo script ti funziona quando è eseguito manualmente, allora potrebbe essere che tu non vedi sul tuo schermo la domanda di zenity e che lo script resti in attesa del tuo input per proseguire.
Per confermare che lo script sia eseguito potresti togliere la domanda zenity e l'if che ne dipende e verificare se il `backup' viene eseguito, oppure mettere prima della chiamata a zenity un touch sul desktop per verifica
Violence Jack
Prode Principiante
Messaggi: 90
Iscrizione: domenica 11 luglio 2010, 16:15

Re: Richiesta di copia ad inserimento disco USB

Messaggio da Violence Jack »

Trovato il problema!

nella regola inserita mancano gli apici " che chiude il percorso "/bin/bash /home/lts/Scrivania/Prova.sh"

Codice: Seleziona tutto

ACTION=="add", KERNEL=="sd?1", ATTRS{serial}=="CCBB1112131128471244268709", SYMLINK+="provaUdev", RUN+="/bin/bash /home/lts/Scrivania/Prova.sh

Correggendo la regola inserendo la penna usb usata per prova, lo script viene eseguito in maniera esatta effettuando il backup e lo smontaggio quando richiesto.

E qui nasce un altro problema...

ho modificato la regola inserendo il parametro

Codice: Seleziona tutto

ATTRS{serial}== 

del mio hdd che destinerò al backup, ed al suo inserimento lo script viene correttamente avviato
ma alla conferma di eseguire il backup non compare nulla, avviando lo script da terminale ottengo:

Codice: Seleziona tutto

lts@lts-P5K-Deluxe:~$ sudo /home/lts/Scrivania/Prova.sh
[sudo] password for lts: 
lts@lts-P5K-Deluxe:~$ 

grep: <: File o directory non esistente
grep: sdc5: File o directory non esistente
grep: >: File o directory non esistente
grep: <: File o directory non esistente
grep: sdc5: File o directory non esistente
grep: >: File o directory non esistente
grep: <: File o directory non esistente
grep: sdc5: File o directory non esistente
grep: >: File o directory non esistente
grep: <: File o directory non esistente
grep: sdc5: File o directory non esistente
grep: >: File o directory non esistente
grep: <: File o directory non esistente
grep: sdc5: File o directory non esistente
grep: >: File o directory non esistente
grep: <: File o directory non esistente
grep: sdc5: File o directory non esistente
grep: >: File o directory non esistente
grep: <: File o directory non esistente
grep: sdc5: File o directory non esistente
grep: >: File o directory non esistente
grep: <: File o directory non esistente
grep: sdc5: File o directory non esistente
grep: >: File o directory non esistente
grep: <: File o directory non esistente
Procedura attualmente utilizzata:
Inserita regola Udev

Codice: Seleziona tutto

ACTION=="add", KERNEL=="sd?1", ATTRS{serial}=="0010101650000C86W", SYMLINK+="provaUdev", RUN+="/bin/bash /home/lts/Scrivania/Prova.sh"
contenuto di Prova.sh

Codice: Seleziona tutto

#!/bin/bash
/home/lts/Scrivania/ProvaUdev &
Contenuto di ProvaUdev

Codice: Seleziona tutto

#!/bin/bash
export DISPLAY=:0.0
HDD=$(dmesg | tail | awk -F": " '/sd.: sd./{print $2; exit}')
su lts -c "/usr/bin/zenity --question --title='Backup' --text='Vuoi eseguire il Backup?'"
if [ $? = 0 ]
then
until mount | grep $HDD; do # aspetta che l'HD sia montato
    sleep 0.1
done
mntPnt=$(mount | awk '$0 ~ device {Mnt=$3} END {print Mnt}' device=$HDD)
su lts -c "xterm -hold -e  cp $mntPnt/1 $mntPnt/2/"
fi
# alla fine fallo smontare dallo stesso script
if su lts -c '/usr/bin/zenity --question --title="Copia finita" --text="Smontare il disco ?"'; then
  VOL=${HDD%[0-9]}
  umount -l /dev/$HDD && /usr/bin/udisks --detach /dev/$VOL
  while mount | grep $HDD; do
    sleep .1
  done
  echo "message: Ora puoi staccare il disco " | su lts -c '/usr/bin/zenity --notification --listen' &
else
  exit
fi
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2842
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: Richiesta di copia ad inserimento disco USB

Messaggio da rai »

per favore
rai ha scritto:1) disabilita temporaneamente la regola udev (sai già come fare), inserisci l'unità ed esegui subito questi:

Codice: Seleziona tutto

dmesg | tail 
inoltre sempre a disco montato esegui

Codice: Seleziona tutto

sudo blkid
posta gli output
Violence Jack
Prode Principiante
Messaggi: 90
Iscrizione: domenica 11 luglio 2010, 16:15

Re: Richiesta di copia ad inserimento disco USB

Messaggio da Violence Jack »

Ecco i comandi che mi hai chiesto

Codice: Seleziona tutto

dmesg | tail 

Codice: Seleziona tutto

lts@lts-P5K-Deluxe:~$ dmesg | tail 
[  302.375185] sd 8:0:0:0: [sdc] Write Protect is off
[  302.375191] sd 8:0:0:0: [sdc] Mode Sense: 00 00 00 00
[  302.378065] sd 8:0:0:0: [sdc] Asking for cache data failed
[  302.378070] sd 8:0:0:0: [sdc] Assuming drive cache: write through
[  302.381042] sd 8:0:0:0: [sdc] Asking for cache data failed
[  302.381046] sd 8:0:0:0: [sdc] Assuming drive cache: write through
[  302.395178]  sdc: sdc1 < sdc5 >
[  302.418058] sd 8:0:0:0: [sdc] Asking for cache data failed
[  302.418065] sd 8:0:0:0: [sdc] Assuming drive cache: write through
[  302.418069] sd 8:0:0:0: [sdc] Attached SCSI disk
lts@lts-P5K-Deluxe:~$ 

Codice: Seleziona tutto

sudo blkid

Codice: Seleziona tutto

lts@lts-P5K-Deluxe:~$ sudo blkid
[sudo] password for lts: 
/dev/sda5: LABEL="WD_500GB_DATI" UUID="12E4464AE4463071" TYPE="ntfs" 
/dev/sda6: LABEL="WD_500GB_Backup" UUID="C8F8498CF8497A28" TYPE="ntfs" 
/dev/sdb1: UUID="0ce535bb-4630-4f47-b160-a21a737cdc65" TYPE="ext4" 
/dev/sdb5: UUID="de5e84af-ee09-49fc-abfa-f67de52ae4b1" TYPE="ext4" 
/dev/sdb6: UUID="a107070f-47ea-43d1-b180-5338a53ddfc4" TYPE="ext4" 
/dev/sdc5: UUID="0C24094024092DF0" TYPE="ntfs" 
lts@lts-P5K-Deluxe:~$ 
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2842
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: Richiesta di copia ad inserimento disco USB

Messaggio da rai »

Eccomi, sono stato via nella fine settimana

Ma non avevi detto che stavi provando con un disco formattato ext4 ?
/dev/sdc5: UUID="0C24094024092DF0" TYPE="ntfs"
comunque, visto anche che non è possibile sapere programmaticamente in quale partizione vorrai copiare i dati, è meglio semplificare lo script sostituendo la riga
HDD=$(dmesg | tail | awk -F": " '/sd.: sd./{print $2; exit}')
con una assegnazione hardcoded, cioè che completerai manualmente secondo necessità. Per esempio, per fare il backup su quella partizione logica in dev/sdc5 scriverai:

Codice: Seleziona tutto

HDD=sdc5
Violence Jack
Prode Principiante
Messaggi: 90
Iscrizione: domenica 11 luglio 2010, 16:15

Re: Richiesta di copia ad inserimento disco USB

Messaggio da Violence Jack »

rai ha scritto: Ma non avevi detto che stavi provando con un disco formattato ext4 ?
/dev/sdc5: UUID="0C24094024092DF0" TYPE="ntfs"
L'errore viene dato anche con hdd ext4
Violence Jack
Prode Principiante
Messaggi: 90
Iscrizione: domenica 11 luglio 2010, 16:15

Re: Richiesta di copia ad inserimento disco USB

Messaggio da Violence Jack »

Dopo svariati mesi riesumo il post

lo script che sto utilizzando è il seguente

Codice: Seleziona tutto

#!/bin/bash
export DISPLAY=:0.0
HDD=sdc5
su lts -c "/usr/bin/zenity --question --title='Backup' --text='Vuoi eseguire il Backup?'"
if [ $? = 0 ]
then
until mount | grep $HDD; do # aspetta che l'HD sia montato
    sleep 0.1
done
mntPnt=$(mount | awk '$0 ~ device {Mnt=$3} END {print Mnt}' device=$HDD)
su lts -c "xterm -hold -e cp /home/lts/Scrivania/test/dainviare $mntPnt/ricevuti"
fi
# alla fine fallo smontare dallo stesso script
if su lts -c '/usr/bin/zenity --question --title="Copia finita" --text="Smontare il disco ?"'; then
  VOL=${HDD%[0-9]}
  umount -l /dev/$HDD && /usr/bin/udisks --detach /dev/$VOL
  while mount | grep $HDD; do
    sleep .1
  done
  echo "message: Ora puoi staccare il disco " | su lts -c '/usr/bin/zenity --notification --listen' &
else
  exit
fi
fà esattamente quello che deve fare, ma vorrei migliorarlo, precisamente in questa parte di codice:

Codice: Seleziona tutto

"xterm -hold -e cp /home/lts/Scrivania/test/dainviare $mntPnt/ricevuti"
viene richiamato xterm per eseguire il comando di copia, (utilizzando gnome-terminal, il terminale si sarebbe chiuso immediatamente)
ho scelto xterm con l'opzione -hold perchè vorrei un messaggio a terminale che mi informi sullo stato delle operazioni o quantomeno se ci sono stati dei problemi in fase di scrittura,
qualcosa del tipo:

Codice: Seleziona tutto

xterm -hold -e cp /home/lts/Scrivania/test/dainviare /home/lts/Scrivania/test/ricevuti
if [ $? -eq 0 ]
then
    echo "Copia effettuata con successo!"
else
    echo "Problema di trasferimento copia non effettuata"
 fi

ma ovviamente inserendolo non funziona..
se la mia scelta di utilizzare xterm non risulterebbe adatta si potrebbe utilizzare zenity, magari visualizzando anche la percenutale di copia nella progress bar (sarebbe davvero il massimo ma non so realizzarlo :cry: )
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 9 ospiti