View Full Version : [Bash] Script per masterizzare dvd
Slayer86
11-01-2009, 17:44
Ciao a tutti vorrei realizzare un semplice script che servirà per masterizzare dei dvd.
Allora lo script è davvero semplice sono di fatto 3 comandi...
Tuttavia vorrei che data un path come argomento venisse creata una iso del contenuto della cartella... la iso dovrà essere montata per vederne il contenuto...
Fin qui nessun problema, però a questo punto vorrei che lo script si interrompesse per dare modo di visualizzare il contenuto della iso... e poi aspettasse conferma per continuare...
quindi magari farlo attendere un input da terminale yes o no...
come faccio?
Ho provato a cercare un po in giro ma non so nemmeno se è una cosa fattibile con uno script...
Grazie a tutti
variabilepippo
11-01-2009, 18:02
un semplice script
Se intendi montare, visualizzare e masterizzare ISO non è poi uno script semplicissimo. Per la masterizzazione non credo ci siano troppi problemi, ci sarebbe invece da capire cosa intendi per "visualizzare il contenuto" di un'immagine ISO.
se metti una cosa del tipo:
nautilus /cartella_da_vedere
lo script nn rimane "pausato" finchè non chiudi nautilus??
Slayer86
11-01-2009, 19:35
Se intendi montare, visualizzare e masterizzare ISO non è poi uno script semplicissimo. Per la masterizzazione non credo ci siano troppi problemi, ci sarebbe invece da capire cosa intendi per "visualizzare il contenuto" di un'immagine ISO.
bhe faccio il mount dell'immagine... poi apro nautils nella cartella in cui ho montato l'immagine... e nel frattempo chiedo conferma se procedere o meno...
se metti una cosa del tipo:
nautilus /cartella_da_vedere
lo script nn rimane "pausato" finchè non chiudi nautilus??
no... lo script continua!
cmq posto quello che ho fatto fino ad ora:
#!/bin/bash
#
#burn-dvd.sh: crea la iso di una cartella poi la masterizza.
#
if test $# != 2 ;then
echo 'Numero parametri in ingresso sbagliati'
exit 1
fi
PATH=$1
NAME=$2
MAXDIM=4400000
echo 'Inizio preparazione iso della cartella:'
echo $PATH
echo 'Nome della iso:'
echo $NAME
#calcolo dimensione cartella
DIM=`/usr/bin/du -sc $PATH | /bin/grep totale | /usr/bin/cut -f1`
#controllo della dimensione della cartella
if [ $DIM -gt $MAXDIM ]; then
echo 'La dimensione totale dei file da masterizzare è '$DIM
echo 'La dimensione dei file supera quella massima consentita per un dvd!'
exit 2
fi
echo 'Inizio preparazione della iso:'
#preparazione della iso
#mkisofs -R -J -joliet-long -o $NAME'.iso' $PATH
echo 'Iso completata.'
#mount della iso per controllare il contenuto
#sudo mount -t iso9660 $NAME'.iso' /media/iso -o loop
echo 'Controllare che il contenuto della iso sia corretto:'
#/usr/bin/nautilus /media/iso
echo 'Procedere con la masterizzazione?'
#sospendere lo script per far sciegliere secontinuare o meno
#smontagio della iso
#sudo umount /media/iso
echo 'Inizio masterizzazione:'
#inizio della masterizzazione
#growisofs -Z /dev/sr1=$NAME'.iso'
echo 'Copia avvenuta con successo!!!'
echo 'Rimozione della iso'
#/usr/bin/eject /dev/sr1
echo 'Reinserire il dvd se si vuole controllare il contenuto!'
manca appunto la parte che non so fare... ovvero bloccare il flusso di istruzioni e riprenderlo a comando... tipo la funzione get del C
poi va ripulito di alcune cose inutili... vorrei metterci la possibilità di fare il log su file e di sciegliere a priori il numero di copie...
ma tutto questo lo si fa facilmente se riesco a far fermare sto script quando dico io...
EDIT: trovato cercando con google... basta usare read e salvare quello che si scrive in una variabile!!! adesso comleto lo script! Poi lo riposterò così mi date una mano a fare i log su file!
Se avete suggerimenti per migliorarlo ditemi pure!
Slayer86
11-01-2009, 20:29
Domanda come faccio ad interrompere lo script se per caso la creazione della iso non va a buon fine... insomma... quando lo script chiama mkisofs e c'è un qualsiasi problema ho un qualche parametro di ritorno che mi fa capire che la chiamata non è andata abuon fine?
Questo mi servirebbe per capire se qualche cosa fa male e cosa...
invece qualche suggerimento per quanto riguarda il log si file??? come faccio a indirizzare sia in stdout sia su un file di log?
Grazie del aiuto!
Slayer86
11-01-2009, 21:33
#!/bin/bash
#
#burn-dvd.sh: crea la iso di una cartella poi la masterizza. By Slayer86
#
if test $# != 2 ;then
echo 'Numero parametri in ingresso sbagliati'
exit 1
fi
PATH=$1
NAME=$2
echo 'Controllo esistenza di un file iso con lo stesso nome:'
EXE=`/bin/ls | /bin/grep $NAME`
if [ $EXE = $NAME'.iso' ] ; then
echo 'Esiste già un file iso con lo stesso nome, si vuole sovrascrivere il file? yes/no'
read DEC
while [ "$DEC" != "yes" ] ; do #controllo che venga scritto yes o no
if [ $DEC = 'no' ] ; then
echo 'Cambiare il nome della iso:'
read NAME
break
fi
echo 'Scrivere solo yes/no!'
echo 'Esiste già un file iso con lo stesso nome, si vuole sovrascrivere il file? yes/no'
read DEC
done
fi
#
#Aggiungere il numero di copie che si vuole fare della stessa iso!
#
MAXDIM=4400000
echo 'Inizio preparazione iso della cartella:'
echo $PATH
echo 'Nome della iso:'
echo $NAME
#calcolo dimensione cartella
DIM=`/usr/bin/du -sc $PATH | /bin/grep totale | /usr/bin/cut -f1`
#controllo della dimensione della cartella
if [ $DIM -gt $MAXDIM ]; then
echo 'La dimensione totale dei file da masterizzare è '$DIM
echo 'La dimensione dei file supera quella massima consentita per un dvd!'
exit 2
fi
echo 'Inizio preparazione della iso:'
#preparazione della iso
/usr/bin/mkisofs -R -J -joliet-long -o $NAME'.iso' $PATH
echo 'Iso completata.'
#mount della iso per controllare il contenuto
/usr/bin/sudo mount -t iso9660 $NAME'.iso' /media/iso -o loop
echo 'Controllare che il contenuto della iso sia corretto:'
/usr/bin/nautilus /media/iso
echo 'Procedere con la masterizzazione? yes/no'
#sospendere lo script per far sciegliere secontinuare o meno
read CONF
while [ "$CONF" != "yes" ] ; do #controllo che venga scritto yes o no
if [ $CONF = 'no' ] ; then #interruzione
echo 'Copia interrotta!'
exit 3
fi
echo 'Scrivere solo yes/no!'
echo 'Procedere con la masterizzazione? yes/no'
read CONF
done
#smontagio della iso
/usr/bin/sudo umount /media/iso
echo 'Inizio masterizzazione:'
#inizio della masterizzazione
/usr/bin/growisofs -Z /dev/sr1=$NAME'.iso'
#
#Aggingere un controllo che la copia avvenga con successo!!!
#
echo 'Copia avvenuta con successo!!!'
echo 'Rimozione della iso'
/bin/rm -v $NAME'.iso'
/usr/bin/eject /dev/sr1
echo 'Reinserire il dvd se si vuole controllare il contenuto!'
Dovrebbe essere funzionante!
Non ho provato a masterizzare ma a fare solo la iso!
Cmq masterizzare è un comando solo...
Dunque per ora fa semplicemente una copia di una cartella dopo aver preparato l'iso...
alla inizio controlla che non esista già una isa chiamata nello stesso modo e poi alla fine cancella l'iso creata...
Le prossime modifiche che farò sono :
-aggiungere il log su file (ma qui vorrei sentire il parere di qualcuno!)
-poter sciegliere quante copie fare della stessa iso...
-modulare l'output a video in base alle opzioni messe all'inizio tipo -v per avere l'output completo
-fare lo script un pelo più personalizzabile... ovvero poter sciegliere la velocità a cui scrivere ecc...
Spero che questo script possa essere utile a qualcuno come lo è per me...
Intanto lo faccio per perndere dimestichezza con il linguaggio bash che mi ha sempre affascinato ma non lo so usare un granche!
;) ciao a tutti!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.