Home · Kontakt · Impressum
contents index previous up next
Next: 15.3.6 while ... do Up: 15.3 Grundstrukturen Previous: 15.3.4 case

Unterabschnitte



15.3.5 dialog

Um auch auf der Textkonsole ein Gefühl von graphischer Oberfläche zu schaffen, wurde der Befehl dialog geschaffen. Er erzeugt verschiedene Arten von Fenstern für Ein- und Ausgabe.

dialog --clear
dialog --create-rc DATEI
dialog [OTPIONEN] BOX

15.3.5.1 Boxtypen

Es stehen die folgenden Boxvariationen zur Auswahl:

--msgbox TEXT HÖHE BREITE
Eine Box in der Größe HÖHE x Breite und einem TEXT wird dargestellt. Durch Betätigen von <RETURN> wird die Box geschlossen.

--yesno TEXT HÖHE BREITE
Eine Box in der Größe HÖHE x Breite und einem TEXT. Es besteht die Möglichkeit mit Ja und Nein zu antworten. Bei Ja wird ein Fehlercode von 0 und bei Nein ein Fehlercode von 1 zurückgegeben.

--infobox TEXT HÖHE BREITE
Die Infobox ist im Prinzip eine Messagebox. Nur muß die Nachricht nicht mit <RETURN> bestätigt werden. Sie bleibt so lange stehen, bis ein neuer Befehl kommt.

--inputbox TEXT HÖHE BREITE [VORGABE]
Die Inputbox erlaubt die Eingabe einer Zeichenkette. Die eingegebene Zeichenkette wird über die Standardfehlerausgabe zurückgegeben.

ole@enterprise:~/test> dialog --inputbox Eingabe 20 70 2> in.tmp
ole@enterprise:~/test> echo $(cat in.tmp)
Hallo

--textbox DATEI HÖHE BREITE
Die Textbox stellt den Inhalt einer Datei in einem Nachrichtenfenster dar. Im Gegensatz zum normalen Nachrichtenfenster kann hier durch den Text gescrollt werden. Dieses Fenster wird für größere Texte verwendet. Durch Betätigen von <RETURN> wird die Box geschlossen.

--menu TEXT HÖHE BREITE MENÜPUNKTE [PUNKT BEZEICHNUNG] ...
Eine Menübox zeigt eine Auswahl von Punkten an, aus denen der Benutzer einen Auswählen kann. Die Bezeichnung des ausgewählten Punkts wird über die Standardfehlerausgabe zurückgegeben. Ein Beispiel für die Menübox finden Sie in Listing 15.9.

15.3.5.2 Eine Auswahliste für Systembefehle

Die Idee hinter diesem Projekt ist einfach zu beschreiben. Dem Benutzer sollen gewisse Befehle erlaubt werden, ohne daß er Rechte auf andere Befehle bekommt. Hier hilft der Befehl sudo (9.3.1) normalerweise weiter. Um das ganze komfortabler zu gestalten, werden alle Befehle, die jemand können muß, in ein Skript geschrieben und können durch ein Auswahldialog ausgewählt werden. Damit das ganze dann auch noch mit root-Rechten läuft, wird es erlaubt das Skript mit sudo unter root zu starten.

Im ersten Schritt wird das Skript von root geschrieben und im Verzeichnis /usr/bin gespeichert. Die Rechte sind auf 700 gesetzt.

Listing 15.9   manager

   1: #!/bin/bash
   2: 
   3: # Führt vordefinierte Befehle aus. 
   4: # Die Ausführung dieses Skripts unter sudo als root erlauben
   5: 
   6: # Temporäre Datei für die Ergebnisse
   7: tempdatei=/tmp/gwinternet.tmp.$$
   8: 
   9: # Dialogfenster
  10: dialog --menu "Wählen Sie den Dienst" 20 50 10 \
  11:         0       "Swap aktivieren" \
  12:         1       "Swap deaktiviren" \
  13:         2       "Maillogdatei anzeigen" \
  14:         3       "Rechner herunterfahren" \
  15:         4       "Rechner neu starten" \
  16:         2> $tempdatei
  17: 
  18: eingabe=$(cat $tempdatei)
  19: 
  20: #Auswerten      
  21: echo "Sie haben ausgewählt: $eingabe"
  22: 
  23: case $eingabe in
  24:   0) # Swap aktivieren
  25:      /sbin/swapon /swap
  26:      if [ $? -gt 0 ]
  27:      then
  28:        echo "Fehler bei Ausführung" > $tempdatei
  29:      else 
  30:        /sbin/swapon -s > $tempdatei
  31:      fi   
  32:      dialog --textbox $tempdatei 20 70
  33:      ;;
  34: 
  35:   1) # Swap deaktivieren
  36:      /sbin/swapoff /swap
  37:      if [ $? -gt 0 ]
  38:      then
  39:        echo "Fehler bei Ausführung" > $tempdatei
  40:      else 
  41:        /sbin/swapon -s > $tempdatei
  42:      fi   
  43:      dialog --textbox $tempdatei 20 70
  44:      ;;
  45: 
  46:   2) # /var/log/mail
  47:      dialog --textbox /var/log/mail 20 70
  48:      ;;
  49: 
  50:   3) # Rechner runterfahren
  51:      # Aufräumen
  52:      rm -f $tempdatei
  53:      echo "Der Rechner wird heruntergefahren"  
  54:      /sbin/shutdown -h now
  55:      ;;
  56: 
  57:   4) # Rechner neu starten
  58:      # Aufräumen
  59:      rm -f $tempdatei
  60:      echo "Der Rechner wird neu gestartet"  
  61:      /sbin/shutdown -r now
  62:      ;;
  63: 
  64:   *) # Falscher Wert
  65:      echo "Falsche Eingabe!"
  66:      ;;
  67: esac
  68: 
  69: 
  70: # Aufräumen
  71: rm -f $tempdatei

Im zweiten Schritt trägt root für den Benutzer mit visudo (9.3.3) in die /etc/sudoers das Recht ein, daß Skript ausführen zu dürfen.

ole             ALL= NOPASSWD: /usr/bin/manager

Um das Ganze komfortabler zu machen, wird noch ein Alias angelegt.

alias manager="sudo /usr/bin/manager"

Jetzt kann der Benutzer ole das Skript mit Eingabe von manager starten und die angebotenen Befehle ausführen.


contents index previous up next
Next: 15.3.6 while ... do Up: 15.3 Grundstrukturen Previous: 15.3.4 case
  © 2004 by IT-Dozent Ole Vanhoefer · Zum Seitenanfang