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.

pdmenu

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:

#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.

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.

# Definicja kolorów
color:desktop:blue:blue
color:title:blue:white
color:base:blue:white

Kolejnym krokiem jest zdefiniowanie głównego menu całego programu. Posłuży do tego opcja menu:menuid:title[:helptext]. Przykładowe użycie:

# 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

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:

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

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.

  • tr

    Top jest akurat przyjazny, tak jakby htop nie było.

  • Greg

    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.

  • Anonymous

    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.