Archiwum Zenity – praca ze skryptem poprzez okienka

0 Comments

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.

Leave a Reply

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word