Aufgaben Bash diverses

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Aufgabe: Benutzerverwaltung

Schreibe ein Bash-Script, das die Benutzerverwaltung auf einem Linux-System unterstützt. Das Skript sollte die folgenden Funktionen bereitstellen
  • Benutzer hinzufügen
  • Benutzer löschen
  • Benutzer deaktivieren
  • Benutzer aktivieren
  • Benutzerliste anzeigen
Das Skript sollte eine while-Schleife verwenden, um Benutzereingaben entgegenzunehmen,
    • eine if-Bedingung, um den entsprechenden Code für die ausgewählte Aktion auszuführen,
    • und eine case-Anweisung, um die verschiedenen Optionen zu behandeln.
  • Es sollte Functionen enthalten.

Starten von Desktopanwendungen

  • Schreiben Sie ein Skript, welches in den Ordnern /usr/share/applications, ~/.local/share/applications und ~/Desktop nach .desktop-Dateien sucht
  • Falls die Datei Name=... und Exec=... enthält sollen diese in einem assoziativen Array gespeichert werden (Key-Value Paar)
  • Danach soll das Skript die Möglichkeit bieten alle Namen in less anzuzeigen...
  • ...oder das in Exec=... aufgeführte Kommando ausführen, falls Teile des Anwendungsnamens angegeben werden

<--

  1. !/bin/bash

DESKTOP=/usr/share/applications:~/.local/share/applications:~/Desktop declare -A OPTIONS

  1. Suche alle .desktop Dateien

for d in $(echo $DESKTOP | sed "s/:/\n/g"); do

   for i in $(ls $d/*.desktop 2> /dev/null); do 

APPS+=("$i")

   done

done

  1. Verbinde Anwendungsnamen mit Kommandozeilenbefehl

for a in "${APPS[@]}"; do

   KEY=$(grep -m 1 "^Name=" $a | cut -d "=" -f 2)
   VAL=$(grep -m 1 "^Exec=" $a | cut -d "=" -f 2 | cut -d "%" -f 1)
   [ "$KEY" ] && OPTIONS["$KEY"]=$VAL && NAMES+="$KEY\n"

done

  1. Eingabe von l zeigt die gefunden Namen
  2. Sonst wird der erste grep Match ausgeführt

while true; do

   echo -n "Enter l to list Apps: " ; read CHOICE
   case $CHOICE in

"l") echo -e "$NAMES" | less ;; *) MATCH=$(echo -e "$NAMES" | grep -m 1 -i $CHOICE) eval "${OPTIONS[$MATCH]}" exit 0 ;;

   esac

done -->