Skip to content.
Logo tecnoteca

Portale Tecnoteca.it

Logo tecnoteca

Vai al sito aziendale Tecnoteca.com


 
You are here: tecnoteca.it » How to » Linux Tips » "Vestire" gli script di shell

"Vestire" gli script di shell

UN "VESTITO" PER GLI SCRIPT DI SHELL: DIALOG/XDIALOG

Da alcuni elevato a forma d'arte, da altri considerato un "semplice linguaggio di scripting", lo scripting della shell di Linux rimane comunque, da qualsiasi lato lo si guardi, uno strumento potente e indispensabile per l'amministratore di sistema e per l'utente evoluto.
Probabilmente alcuni di voi che lo utilizzano da tempo lo considereranno un linguaggio completo per le funzioni che deve svolgere, il che è certamente vero!
Ma potrebbe darsi il caso in cui un'interfaccia grafica, seppur semplice e minimale, possa agevolare alcune operazioni (raggruppare alcuni comandi usati di frequente in un menù, installare un programma con parecchie opzioni di installazione, ecc..).
In questi casi vi vengono in aiuto DIALOG e XDIALOG, due strumenti che dotano gli script di una GUI; per la precisione Dialog è basato sul terminale mentre Xdialog è un programma per X11.
In sostanza, quello che fanno questi programmi è visualizzare diversi tipi di caselle di dialogo (casella di interrogazione con pulsanti di risposta "si" e "no", lista scorrevole di scelte, caselle di testo, ecc..).

Questo breve articolo illustrerà solo alcuni esempi molto semplici.
Del resto, se volete approfondire ci sono i siti http://hightek.org/dialog/ (per Dialog) e http://xdialog.dyns.net (per Xdialog) dai quali potete scaricare i programmi stessi e la documentazione, c'è il comando dialog+invio da terminale, un discreto numero di esempi nella directory /usr/share/doc/dialog-0.9b/samples (almeno per quanto riguarda Red Hat 9) e l'immancabile pagina man.

Vediamo ora il primo esempio.
Aprite un file di testo vuoto e inserite il seguente contenuto:

# INIZIO SCRIPT #
#!/bin/bash
dialog --title "titolo" --backtitle "titolo di fondo" --yesno "Ti piace Dialog?" 0 0; \
# utilizziamo qui una casella di interrogazione con i pulsanti di risposta "si" e "no",
# diamo un titolo e un titolo di fondo,
# il doppio zero finale (altezza e larghezza) indica che la finestra viene
# dimensionata automaticamente (provate a dargli qualche valore numerico)

case $? in
0) echo "benissimo!" ;;
1) echo "peccato..." ;;
255) echo "uscita con il tasto ESC" ;;
esac
# nel caso in cui si seleziona il pulsante "si" viene stampato a monitor
# il messaggio "benissimo!"
# nel caso in cui si seleziona il pulsante "no" viene stampato a monitor
# il messaggio "peccato..."
# nel caso in cui premiamo il tasto ESC viene stampato a monitor
# il messaggio "uscita con il tasto ESC"
# FINE SCRIPT #

Salvate il file con il nome, ad es., script,
modificate i permessi (es.: chmod 700 script),
lanciatelo (es.: ./script) e vedete i risultati.
Semplice.....ma non molto utile direi.

Ecco allora un altro esempio, con Xdialog questa volta e quindi utilizzabile da ambiente grafico, che io utilizzo per avviare la connessione a internet con il modem adsl speedtouch usb.
Create il file avvia_connessione contenente il seguente codice:

# INIZIO SCRIPT #
#!/bin/bash
Xdialog --yesno "Vuoi connetterti a internet?" 0 0; \
case $? in
0) modem_run -m -f /usr/share/speedtouch/mgmt.o; pppd call adsl; ifconfig ppp0;;
1) exit;;
esac
# FINE SCRIPT #

Per disconnettersi create il file ferma_connessione con il seguente codice:

# INIZIO SCRIPT #
#!/bin/bash
Xdialog --yesno "Vuoi disconnetterti da internet?" 0 0; \
case $? in
0) killall ppp0;;
1) exit;;
esac
# FINE SCRIPT #

E veniamo all'ultimo esempio.
Supponiamo di voler creare un menù che contiene alcuni comandi e operazioni utilizzati di frequente.
Il contenuto dello script sarà il seguente:

# INIZIO SCRIPT #
#!/bin/bash
dialog --menu "Menù di scelta" 0 0 0 \
# creiamo un menù di scelta
# il triplo 0 finale (altezza, larghezza, altezza menù) indica che la finestra
# viene dimensionata automaticamente

1 "Backup" \
2 "Avvia ambiente grafico" \
3 "Esci" 2> /tmp/menu.$$
# le opzioni selezionate vengono mostrate come standard error e redirette nel file
# temporaneo menu.$$ che in seguito viene eliminato

opt=`cat /tmp/menu.$$`
# il simbolo ` si ottiene premendo ALT+96 da tastiera in codice ascii

rm -rf /tmp/menu.$$
case $opt in
1) tar -cvzf /root/backup.tar.gz /home; read;;
2) startx;;
3) exit;;
esac
# per ogni voce di menù viene eseguito il comando indicato
# FINE SCRIPT #


A voi approfondire l'argomento.

 
di Francesco Celebrini
celebra@virgilio.it