Listing 1: Assoziatives Array §§nonumber declare -A server_ips server_ips["web"]="192.168.1.10" server_ips["db"]="192.168.1.20" server_ips["cache"]="192.168.1.30" # Auf Werte zugreifen echo "Webserver-IP: ${server_ips["web"]}" # Schlüssel und Werte durchlaufen for key in "${!server_ips[@]}"; do echo "$key -> ${server_ips[$key]}" done Listing 2: Reguläre Ausdrücke in Bash §§nonumber log_entry="Fehler: Verbindung nach 14:25:30 abgelaufen" if [[ $log_entry =~ Error:\ (.+)\ at\ ([0-9:]+) ]]; then echo "Message: ${BASH_REMATCH[1]}" echo "Time: ${BASH_REMATCH[2]}" fi Listing 3: Protokollzusammenfassung §§nonumber #!/bin/bash log_file="/var/log/syslog" output_file="/var/log/error_summary.log" # Überprüfen, ob die Logdatei existiert if [[ ! -f $log_file ]]; then echo "Fehler: Die Logdatei $log_file existiert nicht." exit 1 fi # Fehlereinträge extrahieren und Häufigkeit zählen grep -i "error" "$log_file" | awk '{print $1, $2, $3, $NF}' | sort | uniq -c > "$output_file" echo "Fehlerübersicht in $output_file erstellt" Listing 4: Paketaktualisierungen §§nonumber #!/bin/bash # Paketmanager erkennen if command -v apt >/dev/null 2>&1; then package_manager="apt" elif command -v yum >/dev/null 2>&1; then package_manager="yum" else echo "Fehler: Unterstützter Paketmanager nicht gefunden." exit 1 fi # Aktualisierungen durchführen echo "System wird mit $package_manager aktualisiert ..." if [[ $package_manager == 'apt' ]]; then sudo apt update && sudo apt upgrade -y elif [[ $package_manager == 'yum' ]]; then sudo yum update -y fi echo "Systemaktualisierung abgeschlossen." Listing 5: Backups §§nonumber #!/bin/bash backup_src="/home/user/data" backup_dest="/backups" date=$(date +%Y-%m-%d) max_backups=7 # Erstellen der heutigen Sicherung rsync -a --delete "$backup_src/" "$backup_dest/$date/" # Rotieren der Sicherungen cd "$backup_dest" || exit backup_count=$(ls -1d */ | wc -l) if (( backup_count > max_backups )); then oldest_backup=$(ls -1d */ | head -n 1) echo "Älteste Sicherung wird entfernt: $oldest_backup" rm -rf "$oldest_backup" fi echo "Sicherung abgeschlossen. Aktuelle Sicherungen:" ls -1d */ Listing 6: Überwachung und Auslösen §§nonumber pid=1234 cpu_usage=$(ps -o %cpu= -p $pid) mem_usage=$(ps -o %mem= -p $pid) if (( $(echo "$cpu_usage > 80" | bc -l) )); then echo "Warnung: Prozess $pid verwendet $cpu_usage% CPU." fi if (( $(echo "$mem_usage > 70" | bc -l) )); then echo "Warnung: Prozess $pid verwendet $mem_usage% Speicher." fi Listing 7: Testdatei zur bats-Überprüfung §§nonumber # test_my_script.bats esult=$(./my_script.sh add 2 3) [ "$result" -eq 5 ] } esult=$(./my_script.sh add 2) [ "$result" = "Fehler: Fehlende Argumente" ] }