dialog --clear dialog --create-rc DATEI dialog [OTPIONEN] BOX
--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.
Im ersten Schritt wird das Skript von root geschrieben und im Verzeichnis /usr/bin gespeichert. Die Rechte sind auf 700 gesetzt.
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.