Zenity - praca ze skryptem poprzez okienka

Tuesday, May 5, 2009, autor: Rafał

Pracując z Linuksem usprawniam sobie pracę krótkimi skrypcikami Bash. Zamiast wpisywać kilka komend pakuję je w jeden krótki skrypt i tworzę aktywator na pulpicie. Takie skrypty powłoki (shell script) są bardzo łatwe do napisania i nie trzeba tu sięgać po zaawansowane języki jak np. Perl.
Przykładem  skryptu Bash (wykonywać poprzez ‘./<SKRYPT>’ a nie ’sh <SHRYPT>’) może być upakowanie kilku komend montujących ukryte w systemie dane.  Dotyczy on tematu szyfrowania, który poruszyłem w jednym z wpisów.

#!/bin/bash
if [ ! `whoami` == "root" ]; then
exec sudo $0
fi
echo Logowanie jako superuser powiodło się!
echo Teraz nastąpi podłączenie dysku
echo Trzeba będzie podać hasło zabezpieczające
read -p 'Wciśnij dowolny klawisz, aby rozpocząć podłączanie…'
cd /home/rafal
losetup /dev/loop0 ukryty
cryptsetup luksOpen /dev/loop0 ukryty
mount /dev/mapper/ukryty /mnt/szyfrowane
echo Proces podłączania zakończony
exit

Osobiście lubię proste rozwiązania i taki skrypcik mi wystracza, ale nie wszyscy czują się komfortowo jak nagle otwiera się im konsola tekstowa. Dlatego z myślą o takich osobach warto czasami dołożyć kilka linii do skryptu i w całości obsługiwać go poprzez okienka.
Pracując z GNOME mamy do dyspozycji proste narzędzie - zenity - wykorzystujące okienka  dialogowe gtk+.  Jest ono domyślnie instalowane z niektórymi dystrybucjami (jak Ubuntu), ale gdyby nie było, to instalujemy pakiet o tej samej nazwie.

Najprostsze zastosowanie zenity to proste okienko z infromacją. Wystarczy, że w skrypcie umieścimy tego typu linię:

zenity --info --text "To jest okienko ze wskazówką"

Możemy wkleić ten tekst i wykonać go w linii komend. Okienko które się pojawi będzie wyglądać tak (oczywiście ostateczny wygląd zależy od ustawień motywu GNOME - w tym wypadku przypomina on systemy Apple).

Zenity - Okienko informacji

Innym przykładem wykorzystania zenity może być wybór dostępnych opcji.

#!/bin/sh
odpowiedz=$(zenity  --list  --text "Podoba Ci się ten wpis na blogu?" --title="Ocena wpisu" --radiolist  --column "Wybierz" --column "Odpowiedź" TRUE "Bardzo fajny" FALSE "Taki sobie" FALSE "Nie podoba mi się"); echo $odpowiedz

W tym skrypcie zmienna “odpowiedz” przybiera wartość w zależności od tego co wybierzemy. Możemy ją wykorzystać w dalszej części skryptu, aby wykonać odpowiednie operacje w zależności od wybranej opcji.

Zenity - Okienko z wyborem

Dokumentacja na temat zenity jest dostępna w Internecie, więc nie będę jej przepisywał. Bardziej chodzi mi o zainteresowanie tematem. Podam jeszcze przykład przerobionego skryptu, który przedstawiłem na początku:

#!/bin/bash
#Skrypt montujący ukryte dane z wykorzystaniem Zenity
# Ukryty plik o nazwie 'ukryty' znajduje się w katalogu /home/rafal
# i zostanie podmontowany jako /mnt/szyfrowane
cd /home/rafal
sudo -K
zenity --entry \
--title="Autoryzacja" \
--text="Podaj hasło admina:" \
--entry-text "" \
--hide-text | sudo -S losetup /dev/loop0 ukryty
if [ "$?" != 0 ]; then
zenity --error --text="Podano nieprawidłowe hasło!"
exit 1
fi
zenity --entry \
--title="Zaszyfrowane dane" \
--text="Podaj hasło zabezpieczające:" \
--entry-text "" \
--hide-text | sudo -S cryptsetup luksOpen /dev/loop0 ukryty
if [ "$?" != 0 ]; then
zenity --error --text="Podano nieprawidłowe hasło!"
exit 1
fi
sudo -S mount /dev/mapper/ukryty /mnt/szyfrowane
zenity --info --text "Dysk został zamontowany poprawnie." --title=Potwierdzenie
# Koniec skryptu

Nawet przy stosunkowo niewielkiej znajomości pisania skryptów Bash, wykorzystanie  zenity jest bardzo proste.



 

 

 



Zostaw komentarz


 


 


 


 

*
Wpisz słowo z obrazka. Kliknij na obrazku aby usłyszeć angielską wersję audio
Kliknij na obrazku aby usłyszeć angielską wersję audio