PDA

Visualizza la versione completa : GUI per script, help


psykopear
15-02-2008, 20:02
Ho scoperto ora zenity, un ottimo comando che permette di creare un interfaccia grafica per script bash. Stupendo, però mi impallo un po con la sintassi:

Questo è il solito sirm scritto normalmente per bash:


#!/bin/bash

###############################################
# #
# SIRM2 Script Install & Remove Manager 2.2 #
# #
###############################################

#Crea le cartelle necessarie allo script se non esistono (thanks to vortex87)
[ -d "$HOME/backup" ] || mkdir $HOME/backup
[ -d "$HOME/script" ] || mkdir $HOME/script

# Verifica che l'utente abbia permessi di root

ROOT_UID=0

if [ "$UID" != "$ROOT_UID" ]
then
echo "Devi essere root per eseguire questo script."
exit
fi

#Qui sotto le funzioni di sirm2

usage () {
echo "Questo è l'help di sirm2:
Una volta avviato, segui le istruzioni per eseguire le operzioni richieste"
exit 1
}

#Qui sotto l'utilizzo delle funzioni
while [[ "$1" != "" ]]; do
case "$1" in
"-h" ) usage ;;
"--help" ) usage ;;
esac
shift
done

#Qui sotto sirm e le sue utilità

echo "SIRM 2.0. Script Install & Remove Manager versione 2.0.3"
echo "Cosa vuoi fare?"
echo "1) Installare uno script (deve essre in $HOME/script/)"
echo "2) Rimouvere uno script"
echo "3) Fare il backup di uno script in $HOME/backup/ "
echo "4) Ripristinare uno script salvato in $HOME/backup/ "
echo "5) Apri uno sript nella cartella $HOME/script/ con un editor di testo"
echo "6) Uscire"
echo "Digita il numero corrispondente all'operazione"
read scelta
case $scelta in
1)
echo "Digita il nome dello script da installare"
read elencosript
chmod +x $HOME/script/$elencosript
cp $HOME/script/$elencosript /usr/local/bin/
echo "Installati gli script sul tuo computer"
echo "Ora puoi avviarli digitandone il relativo nome (script1, script2 ecc)"
;;
2)
echo "Digita il nome dello script da rimuovere"
read elencosript
rm /usr/local/bin/$elencosript
echo "Rimossi gli script sul tuo computer"
echo "Fine"
;;
3)
echo "Digita il nome dello script (che deve essere in $HOME/script/ )"
read miofile
cp $HOME/script/$miofile $HOME/backup/
echo "Script salvato"
;;
4)
echo "Digita il nome dello script di backup che vuoi ripristinare"
read script
cp $HOME/backup/$script /usr/local/bin/
echo "Script ripristinato"
;;
5)
echo "Digita il nome dello script che vuoi aprire"
read script
echo "Ora digita il nome del tuo editor di testo predefinito (per esempio nano, gedit, kwrite)"
read editor
if [[ $editor == "" ]]
then
nano $HOME/script/$script
exit
fi
$editor $HOME/script/$script &
exit
;;
6)
echo "Ciao"
exit
;;
*)
echo "input non valido"
esac


e fin qui tutto ok, ora ecco come sto provando a trasformarlo per passare tutti i comandi a zenity:


#!/bin/bash

scelta=""

function scelta(){
scelta=$(zenity --width=500 --entry --text "
SIRM 2.0. Script Install & Remove Manager versione 2.0.3
Cosa vuoi fare?
1) Installare uno script (deve essre in $HOME/script/)
2) Rimouvere uno script
3) Fare il backup di uno script in $HOME/backup/
4) Ripristinare uno script salvato in $HOME/backup/
5) Apri uno sript nella cartella $HOME/script/ con un editor di testo
6) Uscire
Digita il numero corrispondente all'operazione
" --title "Sirm2 GUI"
)
return
}

function installa(){
installa=$(zenity --width=500 --entry --text "
Digita il nome dello script da installare
" --title "Scelta script")

return
}


scelta

if [[ $(echo $scelta | grep "1") ]];
then
installa ;
fi

il problema è che non mi viene in mente come far fare a zenity gli altri comandi dopo la scelta del nome dello script da installare. Qualcuno mi sa aiutare?

psykopear
16-02-2008, 15:50
up

nel frattempo ho modificato lo script ma non è ancora funzionale:


#!/bin/bash

scelta=""

function scelta(){
scelta=$(zenity --width=500 --entry --text "
SIRM 2.0. Script Install & Remove Manager versione 2.0.3
Cosa vuoi fare?
1) Installare uno script (deve essre in $HOME/script/)
2) Rimouvere uno script
3) Fare il backup di uno script in $HOME/backup/
4) Ripristinare uno script salvato in $HOME/backup/
5) Apri uno sript nella cartella $HOME/script/ con un editor di testo
6) Uscire
Digita il numero corrispondente all'operazione
" --title "Sirm2 GUI"
)
return
}

function nomescript(){
nomescript=$(zenity --width=500 --entry --text "Digita il nome dello script da installare" --title "Scelta script")
return
}

scelta
nomescript

if [[ $(echo $scelta | grep "1") ]];
then
chmod +x $HOME/script/$(echo $nomesript)
cp $HOME/script/$(echo $nomesript) /usr/local/bin/
echo "Installati gli script sul tuo computer"
echo "Ora puoi avviarli digitandone il relativo nome (script1, script2 ecc)" ;
fi


Who help me?

psykopear
16-02-2008, 16:22
Evvai!! Ho cpaito più o meno come fare, ecco un primo abbozzo, ha solo una funzione, la prima, e potrei migliorare l'impostazione delle finestre, però come idea per la programmazione va più che bene. Quando ho finito faccio il .deb ^^


#!/bin/bash

#Crea le cartelle necessarie allo script se non esistono (thanks to vortex87)
[ -d "$HOME/backup" ] || mkdir $HOME/backup
[ -d "$HOME/script" ] || mkdir $HOME/script

# Verifica che l'utente abbia permessi di root

ROOT_UID=0

if [ "$UID" != "$ROOT_UID" ]
then
echo "Devi essere root per eseguire questo script."
exit
fi

#Programma
scelta=""
nomescript=""
installa=""

function scelta(){
scelta=$(zenity --width=500 --entry --text "
SIRM 2.0. Script Install & Remove Manager versione 2.0.3
Cosa vuoi fare?
1) Installare uno script (deve essre in $HOME/script/)
2) Rimouvere uno script
3) Fare il backup di uno script in $HOME/backup/
4) Ripristinare uno script salvato in $HOME/backup/
5) Apri uno sript nella cartella $HOME/script/ con un editor di testo
6) Uscire
Digita il numero corrispondente all'operazione
" --title "Sirm2 GUI"
)
return
}

function nomescript(){
nomescript=$(zenity --width=500 --entry --text "Scegli lo script che vuoi installare" --title "Scelta script")
return
}

function installa(){
installa=$(zenity --width=500 --info --no-wrap --text "Sto installando lo script" --title "Installazione in corso")
return
}

function installati(){
installati=$(zenity --width=500 --info --no-wrap --text "Installati gli script sul tuo computer
Ora puoi avviarli digitandone il relativo nome (script1, script2 ecc)" --title "Installazione completata")
return
}

scelta
if [ $(echo $scelta | grep "1") ]
then
nomescript
installa
chmod +x $HOME/script/$nomescript
cp $nomescript /usr/local/bin/
installati
fi

Loading