Praca w czystej powłoce dla początkujących użytkowników Linuksa może być trudna i skomplikowana. Jako administratorzy systemu możemy przygotować dla użytkowników specjalne menu, po którym będą się oni poruszać. W prostym i przejrzystym menu udostępnimy im zestaw poleceń, do których będą mieli dostęp. Aplikacja, która to umożliwi to pdmenu. Autorem aplikacji jest Joey Hess.
Pdmenu jest pełnoekranową aplikacją dla systemów Unix oraz Linux. Pozwala ona na użycie wybranych komend systemu, wybierając jest z dostępnego menu. Obsługuje ona kolory oraz kursor myszki.
Domyślnie zainstalowany lub skompilowany program zawiera wstępnie przygotowane menu znajduje się w pliku /usr/local/etc/pdmenurc
. Dla każdego użytkownika można przygotować osobne menu. Konfiguracja przechowywana jest wtedy w pliku ~/.pdmenurc
. Przykładowy plik konfiguracyjny wygląda następująco:
[bash]#Set a pleasing color scheme.
color:desktop:blue:blue
color:title:blue:white
color:base:blue:white
#this is a comment
menu:main:Main Menu:Things to do at foobar
show:_Games..::games
exec:_Mail::pine
exec:_News::slrn -C
exec:_WWW::lynx
exec:_Irc::irc
exec:_Directory _Listing:display:ls -l
exec:_Who’s online?:truncate:w
exec:_Finger:edit,truncate:finger ~finger who?:~
nop
exit:E_xit
menu:games:Games:Some text-based games
exec:_Tetris for Terminals::/usr/games/tt
exec:_Adventure:pause:/usr/games/adventure
exec:_Zork:pause:/usr/games/zork
nop
exit:_Back to main menu.[/bash]
Szczegółowe informacje na temat konfiguracji dostępne są w manualach pdmenu
oraz pdmenurc
.
Budujemy własne menu
Na początku definiujemy sobie kolory w jakich będzie wyświetlane menu. Nie są to obowiązkowe opcje, ale upiększają aplikację. Odpowiada za to opcja: color:screenpart:foreground[:background]
. Pozwala ona na ustawienie kolorów różnych części menu.
[bash]# Definicja kolorów
color:desktop:blue:blue
color:title:blue:white
color:base:blue:white[/bash]
Kolejnym krokiem jest zdefiniowanie głównego menu całego programu. Posłuży do tego opcja menu:menuid:title[:helptext]
. Przykładowe użycie:
[bash]# Główe Menu
menu:main:Główne Menu:thecamels.org # Główne menu z nazwą i opisem
show:_Informacje::info # Wyświetla podmenu info
show:_Komunikacja::kom
show:_Serwery::serwery
show:_Administracja::admin
nop
exit:_Wyjście[/bash]
Znak _
przez literą oznacza skrót klawiszowy jaki można wykorzystać do wejścia w menu. Polecenie show
wyświetli nam kolejne podmenu pod konkretną nazwą. Takie podmenu definiujemy podobnie jak główne:
[bash]menu:info:Informacje:Pokazuje informacje o systemie i użytkownikach # Podmenu info
exec:_Zalogowani użytkownicy:truncate:w # Uruchamia polecenie w a jego wynik wyświetla w pdmenu
exec:_O użytkowniku:edit,truncate:finger ~Podaj login:~ # Uruchamia polecenie finger z parametrem podanym przez użytkownika
exec:_Uptime:display:uptime
exec:O _systemie:display:uname -a
exec:Procesy::top s
nop
exit:_Powrót[/bash]
W kolejnym podmenu dodaliśmy już polecenie exec
. Pozwoli ono na wykonanie komendy zdefiniowanej przez użytkownika lub administratora. Dzięki opcji edit
możliwe jest przekazanie parametrów do polecenia. Po zakończeniu polecenia, użytkownik wraca ponownie do pdmenu
.
Polecenie exec
może przyjąć kilka parametrów np. w jaki sposób wyświetlić wynik polecenia. Dla poleceń, które od razu wyświetlają kilka linii na standardowe wyjście po czym kończą swoje działanie możemy użyć opcji display
albo truncate
. Ta druga nie powoduje zawijania wierszy w przypadku długiego wyniku polecenia.
Nie należy stosować tych opcji do uruchamiania poleceń, które działają ciągle jak np. top
czy inne aplikacje.
Tak przygotowana aplikacja może posłużyć za domyślną powłokę dla dowolnego użytkownika. Po wyjściu z pdmenu
, użytkownik zostaje wylogowany z serwera w takim przypadku.
Przykładowy plik pdmenurc użyty w tym artykule.
Top jest akurat przyjazny, tak jakby htop nie było.
Ale co ma top do tego artykułu? Chyba nie zrozumiałeś. Ja właśnie dodaję sobie takie menu. Mi się przyda do szybkiego dodawania użytkowników do systemu.
Artykuł bardzo ciekawy. Dziękuję! Właśnie wdrażam w mojej pracy takie menu dla konsultantów, którzy mają lewe ręcę. Będą mogli sobie łatwo zmienić hasło inne takie do serwera.