lunedì 3 settembre 2007

script per manipolare iso



Ho realizzato questo semplice script per montare, smontare e masterizzare immagini iso , per selezionare i file mi sono servito del programma zenity, che permette di utilizzare delle interfaccie grafiche nei propri script.
Come programma di masterizzazione mi sono servito del programma brasero lanciandolo da schell, questo per rendere la masterizzazione più semplice ed immediata possibile.

Creiamo un file di testo nella scrivania di nome iso, scriviamo da terminale.

touch $HOME/Desktop/iso

apriamo il file ed incolliamoci queste poche righe di codice.

salvate e chiudete , date i permessi.
#!/bin/bash
# script per montare, smontare e masterizzare immagini iso
# si utilizza il programma zenity per creare le interfaccie grafiche
# ******************************************************************
# creazione delle funzioni
# -----


creapunto() {
sudo modprobe loop
nome=`zenity --entry --text="nome della cartella da adibire a punto di montaggio"`
sudo mkdir /mnt/$nome
percorimma=`zenity --title "posizione immagine iso" --file-selection`
cartella="/mnt/$nome"
sudo mount $percorimma $cartella -t iso9660 -o loop
cd
sudo ln -fs $cartella $HOME/Desktop/iso

}



# funzione per smontare l'immagine
smonta() {
cart=`zenity --entry --text="nome directory punto di montaggio"`
sudo umount /mnt/$cart
sudo rm -fr /mnt/$cart
}

# funzione per masterizzare l'immagine si utilizza il programma brasero.
masterizza() {
a=`zenity --entry --text="vuoi installare brasero scrivi si/no"`
if [ "$a" = "si"; then
sudo apt-get install brasero
mast=`zenity --title "percorso immagine iso" --file-selection`
brasero $mast
elif [ "$a" = "no" ]; then
mast=`zenity --title "percorso immagine iso" --file-selection`
brasero $mast
fi
}

ripeti() {
int=`zenity --text="SCRIPT PER MANIPOLARE ISO" --list --checklist --column="fai la tua scelta" --column=" " false "crea-punto-montaggio" false "smonta-iso" false "masterizza-iso"`
if [ "$int" = "crea-punto-montaggio" ]; then
creapunto


elif [ "$int" = "smonta-iso" ]; then
smonta
else
masterizza
fi
}
# si crea l'interfaccia di selezione, cliccare con il mouse per scegliere
int=`zenity --text="SCRIPT PER MANIPOLARE ISO" --list --checklist --column="fai la tua scelta" --column=" " false "crea-punto-montaggio" false "smonta-iso" false "masterizza-iso"`
if [ "$int" = "crea-punto-montaggio" ]; then
creapunto
ripeti

elif [ "$int" = "smonta-iso" ]; then
smonta
ripeti
else
masterizza
fi


sudo chmod a+rwx $HOME/Desktop/iso

per lanciare lo script scriviamo da terminale:

cd Desktop; ./iso

provatelo e fatemi sapere che ne pensate, anzi se avete suggerimenti per migliorarlo sono ben accetti.

3 commenti:

chico ha detto...

una domanda: che senso ha fare uno script che gestisce graficamente le iso se poi:{
1) lo lancio da shell
2) devo dirgli dove montarlo (sarebbe meglio utilizzare una o più cartelle predefinite tipo /media/iso0 /media/iso1, ecc) oltretutto se inserisco il path assoluto mi risponde "impossibile creare /media//*"... [AAARGHHH!!!!]
3) quando monta il fs mi chiede la password su shell (usa gksu o kdesu)
4) quando mi chiede la iso mi fa selezionare qualunque tipo di file
5) quando mi chiede la cartella mi fa partire dalla pwd e non dalla cartella /mnt dove ho creato il mount point
6) non mi avverte se sto per montare una seconda iso sullo stesso mount point
7) devo ricordare dove ho montato l'immagine e non gestisce i path assoluti
8) si chiude ogni volta che termina la funzione (sarebbe opportuno che dopo aver creato il mount point non debba far ripartire lo script per montare l'iso)
9) i messaggi di errore li scrive sulla shell, quindi se mi creo un collegamento invece di far partire lo script da shell non mi dice assolutamente nulla
10) non cancella il mount point una volta smontata l'immagine
11) non crea un'icona sul desktop
12) se seleziono più possibilità mi parte la masterizzazione anche se non era selezionata
}?

al di là del fatto che sarebbe sicuramente più utile un menù contestuale per i file .iso, non mi sembra che il tuo script sia una procedura tanto trasparente per l'utente... anzi mi sa che è più facile fare tutto da shell

p.s. scusa se sembro scortese... ma l'hai provato (o meglio fatto provare a qualcuno) prima di pubblicarlo?

santo vasta ha detto...

si l'ho fatto provare ad altri è non hanno trovato tutti questi problemi che dici tu.
soprattutto per quei utenti che non sono esperti di comandi shell, si trovano molto bene.

ti fa selezionare qualunque tipo di file, ma penso che se uno lancia un programma che dovrebbe montare le iso sa cosa sono le iso.

sul fatto che si chiude ogni volta che finisce la funzione su questo hai ragione, si può migliorare.

ma tu quando crei una cartella non cè bisogno che digiti un path assoluto, devi sono scrivere il nome della cartella che vuoi creare, ci pensa il programma a crearla dentro /mnt.

si domanda la password, quindi meglio lanciarlo da root. con
sudo ./iso

non capisco cosa interndi quando mi chiede la cartella?

le altre opzioni che dici tu si possono aggiungere, anzi se vuoi migliora lo script e io lo pubblico sul blog, non ce problema.
ciao e grazie dei consigli.

santo vasta ha detto...

chico ho fatto alcune piccole modifiche allo script seguendo i tuoi consigli.

dacci un'occhiata, vedi come ti pare.

fammi sapere.
ciao