Feat: Logging mit Abfrage.

This commit is contained in:
DragonSlayer_14 2025-03-25 11:24:06 +01:00
parent 5d723f8c26
commit 50468884d2
8 changed files with 460 additions and 379 deletions

View File

@ -1,51 +1,64 @@
#!/bin/bash #!/bin/bash
# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird # Root-Rechte prüfen
if [ "$EUID" -ne 0 ]; then if [ "$(id -u)" -ne 0 ]; then
echo "Bitte führen Sie das Skript mit Root-Rechten aus." echo "❌ Bitte als root ausführen!"
exit 1 exit 1
fi fi
apt update && apt upgrade -y apt update && apt upgrade -y
apt install -y git sudo apt install -y git sudo 7zip unrar unzip network-manager software-properties-common tree bluetooth wget curl
# Der Code, der eingefügt werden soll # sbin in Path
CONFIG_BLOCK='if groups | grep -q "\bsudo\b"; then read -p "❓ Soll sbin für sudo-Nutzer in den PATH aufgenommen werden? (j/n) [n]: " answer
case ":$PATH:" in answer=${answer,,} # In Kleinbuchstaben umwandeln
*":/sbin:"*) ;; answer=${answer:-n} # Standardwert 'n', falls leer
*) export PATH="$PATH:/sbin" ;;
esac
case ":$PATH:" in
*":/usr/sbin:"*) ;;
*) export PATH="$PATH:/usr/sbin" ;;
esac
fi'
# Saubere Lösung über /etc/profile.d/ if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
echo "$CONFIG_BLOCK" >/etc/profile.d/custom_path.sh cat << 'EOF' > /etc/profile.d/sbin_in_path.sh
if groups | grep -q "\bsudo\b"; then
# Sudo-Hinweis für bash.bashrc case ":$PATH:" in
SUDO_HINT_BLOCK='# sudo hint *":/sbin:"*) ;;
if [ ! -e "$HOME/.sudo_as_admin_successful" ] && [ ! -e "$HOME/.hushlogin" ] ; then *) export PATH="$PATH:/sbin" ;;
case " $(groups) " in *\ admin\ *|*\ sudo\ *) esac
if [ -x /usr/bin/sudo ]; then case ":$PATH:" in
cat <<-EOF *":/usr/sbin:"*) ;;
To run a command as administrator (user "root"), use "sudo <command>". *) export PATH="$PATH:/usr/sbin" ;;
See "man sudo_root" for details. esac
fi
EOF EOF
fi
esac
fi'
# Prüfen, ob der sudo-Hinweis bereits existiert echo " sbin wurde zum PATH für sudo-Nutzer hinzugefügt."
if ! grep -Fxq "# sudo hint" /etc/bash.bashrc; then
echo -e "\n$SUDO_HINT_BLOCK" | tee -a /etc/bash.bashrc >/dev/null
echo "Sudo-Hinweis zur bash.bashrc hinzugefügt."
else
echo "Sudo-Hinweis ist bereits in bash.bashrc vorhanden."
fi fi
XDG_BLOCK='# /etc/profile.d/desktop_session_xdg_dirs.sh - Prepend a $DESKTOP_SESSION-named directory to $XDG_CONFIG_DIRS and $XDG_DATA_DIRS # sudo-Hinweis
read -p "❓ Soll ein sudo-Hinweis hinzugefügt werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
cat << 'EOF' > /etc/profile.d/sudo_hint.sh
if [ ! -e "$HOME/.sudo_as_admin_successful" ] && [ ! -e "$HOME/.hushlogin" ] ; then
case " $(groups) " in *\ admin\ *|*\ sudo\ *)
if [ -x /usr/bin/sudo ]; then
echo 'To run a command as administrator (user "root"), use "sudo <command>".'
echo 'See "man sudo_root" for details.'
fi
esac
fi
EOF
echo " sudo-Hinweis wurde hinzugefügt!"
fi
# sudo-Hinweis
read -p "❓ Sollen die XDG-Data-Dirs gesetzt werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
cat << 'EOF' > /etc/profile.d/xdg_dirs_desktop_session.sh
# /etc/profile.d/desktop_session_xdg_dirs.sh - Prepend a $DESKTOP_SESSION-named directory to $XDG_CONFIG_DIRS and $XDG_DATA_DIRS
DEFAULT_XDG_CONFIG_DIRS="/etc/xdg" DEFAULT_XDG_CONFIG_DIRS="/etc/xdg"
DEFAULT_XDG_DATA_DIRS="/usr/local/share/:/usr/share/" DEFAULT_XDG_DATA_DIRS="/usr/local/share/:/usr/share/"
@ -70,77 +83,20 @@ if [ -n "$DESKTOP_SESSION" ]; then
export XDG_DATA_DIRS export XDG_DATA_DIRS
fi fi
fi fi
' EOF
echo "$XDG_BLOCK" >/etc/profile.d/xdg_dirs_desktop_session.sh echo " XDG-Data-Dirs wurden gesetzt!"
echo "Passwort für sudo-Nutzer setzen..."
passwd root
# WLAN-Verbindung.
# Frage, ob eine WLAN-Verbindung aufgebaut werden soll
read -p "Möchten Sie eine WLAN-Verbindung aufbauen? (ja/nein): " RESPONSE
if [[ "$RESPONSE" == "ja" ]]; then
# Schritt 1: WLAN-Adapter automatisch ermitteln
echo "Ermittle verfügbare WLAN-Adapter..."
WLAN_ADAPTERS=$(iw dev | grep Interface | awk '{print $2}')
if [[ -z "$WLAN_ADAPTERS" ]]; then
echo "Es wurden keine WLAN-Adapter gefunden. Bitte stellen Sie sicher, dass ein WLAN-Adapter verfügbar ist."
exit 1
fi
# Wenn nur ein Adapter gefunden wurde, automatisch auswählen
if [[ $(echo "$WLAN_ADAPTERS" | wc -l) -eq 1 ]]; then
WLAN_INTERFACE="$WLAN_ADAPTERS"
echo "Gefundener WLAN-Adapter: $WLAN_INTERFACE"
else
# Wenn mehrere Adapter gefunden wurden, den Benutzer fragen
echo "Mehrere WLAN-Adapter gefunden:"
echo "$WLAN_ADAPTERS"
read -p "Bitte geben Sie den gewünschten WLAN-Adapter ein: " WLAN_INTERFACE
fi
# Schritt 2: Eingabe der SSID und des Passworts
read -p "Bitte geben Sie die SSID des Routers ein: " ROUTER_SSID
read -sp "Bitte geben Sie das Passwort für die SSID ein: " ROUTER_PASSWORD
echo
# Schritt 3: Erstellen der WPA-Konfigurationsdatei
CONFIG_FILE="/root/wpa.conf"
echo "Erstelle WPA-Konfigurationsdatei unter $CONFIG_FILE..."
wpa_passphrase "$ROUTER_SSID" "$ROUTER_PASSWORD" > "$CONFIG_FILE"
# Hinweis für Sonderzeichen in der SSID
echo "Hinweis: Wenn Ihre SSID Sonderzeichen enthält, bearbeiten Sie die Datei $CONFIG_FILE manuell."
# Schritt 4: Verbindung mit wpa_supplicant aufbauen
echo "Starte wpa_supplicant..."
wpa_supplicant -B -i "$WLAN_INTERFACE" -c "$CONFIG_FILE"
# Schritt 5: Überprüfen, ob die Verbindung hergestellt wurde
echo "Überprüfe die Verbindung..."
sleep 5 # Wartezeit, um die Verbindung aufzubauen
IW_OUTPUT=$(iw dev "$WLAN_INTERFACE" link)
if echo "$IW_OUTPUT" | grep -q "Connected to"; then
echo "Verbindung erfolgreich hergestellt!"
echo "$IW_OUTPUT"
else
echo "Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie die Konfiguration."
exit 1
fi
# Schritt 6: IP-Adresse und Netzwerkkonfiguration über DHCP abrufen
echo "Hole IP-Adresse und Netzwerkkonfiguration über DHCP..."
dhcpcd
echo "Die WPA-verschlüsselte Verbindung wurde erfolgreich hergestellt!"
else
echo "Abbruch. Es wird keine WLAN-Verbindung aufgebaut."
fi fi
echo "Fertig! Das System wird neugestartet." chmod +x /etc/profile.d/*
reboot # Passwort root
read -p "❓ Soll ein Passwort für root gesetzt werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
passwd root
fi
echo "✅ Abgeschlossen. Zum Anwenden der Änderungen bitte neu einloggen!"

View File

@ -4,7 +4,7 @@ set -e # Skript bricht bei Fehlern ab
# Sicherstellen, dass das Skript **nicht** als root ausgeführt wird # Sicherstellen, dass das Skript **nicht** als root ausgeführt wird
if [[ $EUID -eq 0 ]]; then if [[ $EUID -eq 0 ]]; then
echo "Bitte **nicht** als root oder mit sudo ausführen! Das Skript fordert sudo nur dort an, wo es benötigt wird." echo "Bitte **nicht** als root oder mit sudo ausführen! Das Skript fordert sudo nur dort an, wo es benötigt wird."
exit 1 exit 1
fi fi
@ -33,7 +33,7 @@ for APP in "${!FLATPAK_APPS[@]}"; do
done done
# Dynamischen Vorlagen-Ordner ermitteln # Dynamischen Vorlagen-Ordner ermitteln
TEMPLATE_DIR=$(xdg-user-dir TEMPLATES 2>/dev/null || echo "$HOME/Vorlagen") TEMPLATE_DIR=$(xdg-user-dir TEMPLATES 2 >/dev/null || echo "$HOME/Vorlagen")
mkdir -p "$TEMPLATE_DIR" mkdir -p "$TEMPLATE_DIR"
# Prüfen, ob LibreOffice als Flatpak installiert ist # Prüfen, ob LibreOffice als Flatpak installiert ist
@ -237,9 +237,57 @@ flatpak install flathub org.gnome.FileRoller -y
# Obfuscate # Obfuscate
flatpak install flathub com.belmoussaoui.Obfuscate -y flatpak install flathub com.belmoussaoui.Obfuscate -y
echo "🔄 Installiere VeraCrypt..." # Flatseal
sudo add-apt-repository ppa:unit193/encryption -y flatpak install com.github.tchx84.Flatseal -y
sudo apt update
sudo apt install -y veracrypt # VeraCrypt installieren
read -p "❓ Soll VeraCrypt installiert werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then
echo "🔄 Installiere VeraCrypt..."
sudo add-apt-repository ppa:unit193/encryption -y
sudo apt update
sudo apt install -y veracrypt
fi
# Webmin installieren
read -p "❓ Soll webmin installiert werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then
curl -o /tmp/webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh
sudo sh /tmp/webmin-setup-repo.sh
sudo apt install webmin -y --install-recommends
fi
# Waydroid installieren
read -p "❓ Soll Waydroid installiert werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then
sudo apt install curl ca-certificates -y
curl -s https://repo.waydro.id | sudo bash -s -- -s noble
sudo apt install waydroid -y
sudo ufw allow 53
sudo ufw allow 67
sudo ufw default allow FORWARD
sudo systemctl enable --now waydroid-container
sudo cat << 'EOF' | sudo tee /etc/profile.d/hide_waydroid_apps.sh > /dev/null
for app in ~/.local/share/applications/waydroid.*.desktop; do
grep -q NoDisplay $app || sed '/^Icon=/a NoDisplay=true' -i $app
done
EOF
sudo chmod +x /etc/profile.d/*
echo "⚠️ Beachte, dass in Portmaster unter 'Network Noise' die Ports 53 und 67 komplett freigegeben sind!"
fi
echo "✅ Alle Programme wurden erfolgreich installiert!" echo "✅ Alle Programme wurden erfolgreich installiert!"

View File

@ -2,25 +2,30 @@
# Root-Rechte prüfen # Root-Rechte prüfen
if [ "$(id -u)" -eq 0 ]; then if [ "$(id -u)" -eq 0 ]; then
echo "Bitte nicht als Root ausführen! Das Skript nutzt sudo, falls nötig." echo "❌ Bitte nicht als root ausführen! Das Skript nutzt sudo, falls nötig."
exit 1 exit 1
fi fi
# Verzeichnis setzen # Verzeichnis setzen
REPO_DIR="$HOME/Linux-Active-Directory-join-script" REPO_DIR="/tmp/Linux-Active-Directory-join-script"
# Repository klonen, falls es noch nicht existiert # Repository klonen, falls es noch nicht existiert
if [ -d "$REPO_DIR" ]; then if [ -d "$REPO_DIR" ]; then
echo "Repository existiert bereits. Überspringe das Klonen." echo " Repository existiert bereits. Überspringe das Klonen."
else else
echo "Klonen des Repositories..." echo " Klonen des Repositories..."
git clone https://gitea.creative-dragonslayer.de/DragonSlayer_14/Linux-Active-Directory-join-script.git "$REPO_DIR" git clone https://gitea.creative-dragonslayer.de/DragonSlayer_14/Linux-Active-Directory-join-script.git "$REPO_DIR"
fi fi
# In das Verzeichnis wechseln # In das Verzeichnis wechseln
cd "$REPO_DIR" || { echo "Fehler: Konnte nicht in das Verzeichnis wechseln!"; exit 1; } cd "$REPO_DIR" || { echo "Fehler: Konnte nicht in das Verzeichnis wechseln!"; exit 1; }
# AD-Skript ausführen # AD-Skript ausführen
echo "Starte Active Directory Verbindung..." if [ -f "ADconnection.sh" ]; then
sudo bash ADconnection.sh chmod +x ADconnection.sh
echo " Starte Active Directory setup mit: ./ADconnection.sh"
echo "⚠️ Achtung! Das Skript erkennt Tuxedo nicht. Passe es an, dass der ADJoin von Ubuntu ausgeführt wird!"
else
echo "❌ Fehler: ADconnection.sh nicht gefunden!"
exit 1
fi

View File

@ -2,8 +2,13 @@
# Sicherstellen, dass das Skript **nicht** als root ausgeführt wird # Sicherstellen, dass das Skript **nicht** als root ausgeführt wird
if [[ $EUID -eq 0 ]]; then if [[ $EUID -eq 0 ]]; then
echo "Bitte **nicht** als root oder mit sudo ausführen! Das Skript fordert sudo nur dort an, wo es benötigt wird." echo "❌ Bitte nicht als root ausführen! Das Skript nutzt sudo, falls nötig."
exit 1 exit 1
fi fi
DIR = "/tmp/setup-hyprland"
mkdir -p $DIR
cd $DIR
sh <(curl -L https://raw.githubusercontent.com/JaKooLit/Ubuntu-Hyprland/24.04/auto-install.sh) sh <(curl -L https://raw.githubusercontent.com/JaKooLit/Ubuntu-Hyprland/24.04/auto-install.sh)

View File

@ -2,87 +2,93 @@
# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird # Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird
if [[ $EUID -ne 0 ]]; then if [[ $EUID -ne 0 ]]; then
echo "Dieses Skript muss als root ausgeführt werden." echo "❌ Bitte als root ausführen!"
exit 1 exit 1
fi fi
# Tatsächlichen Benutzer ermitteln (nicht root) # Tatsächlichen Benutzer ermitteln (nicht root)
if [[ -z "$SUDO_USER" || "$SUDO_USER" == "root" ]]; then if [[ -z "$SUDO_USER" || "$SUDO_USER" == "root" ]]; then
echo "Fehler: Das Skript muss mit 'sudo' von einem normalen Benutzer ausgeführt werden." echo "Fehler: Das Skript muss mit 'sudo' von einem normalen Benutzer ausgeführt werden."
exit 1 exit 1
fi fi
USER_NAME="$SUDO_USER" USER_NAME="$SUDO_USER"
USER_HOME=$(eval echo ~$USER_NAME) USER_HOME=$(eval echo ~$USER_NAME)
# Eintrag aus getent passwd holen read -p "❓ Soll die shell für $USER_NAME auf ZSH gesetzt werden? (j/n) [n]: " answer
USER_ENTRY=$(getent passwd "$USER_NAME") answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
# Backup der passwd Datei if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
cp /etc/passwd /etc/passwd.bak # Eintrag aus getent passwd holen
USER_ENTRY=$(getent passwd "$USER_NAME")
if grep -q "^$USER_NAME:" /etc/passwd; then # Backup der passwd Datei
# Existierenden Eintrag aktualisieren cp /etc/passwd /etc/passwd.bak
sed -i "/^$USER_NAME:/s|[^:]*$|/bin/zsh|" /etc/passwd
echo "Shell für $USER_NAME wurde auf zsh aktualisiert." if grep -q "^$USER_NAME:" /etc/passwd; then
else # Existierenden Eintrag aktualisieren
# Neuen Eintrag hinzufügen sed -i "/^$USER_NAME:/s|[^:]*$|/bin/zsh|" /etc/passwd
UPDATED_ENTRY=$(echo "$USER_ENTRY" | awk -F: -v OFS=: '{ $NF="/bin/zsh"; print }') echo " Shell für $USER_NAME wurde auf zsh aktualisiert."
echo "$UPDATED_ENTRY" >>/etc/passwd else
echo "Eintrag für $USER_NAME wurde in /etc/passwd geschrieben mit zsh als Shell." # Neuen Eintrag hinzufügen
UPDATED_ENTRY=$(echo "$USER_ENTRY" | awk -F: -v OFS=: '{ $NF="/bin/zsh"; print }')
echo "$UPDATED_ENTRY" >>/etc/passwd
echo " Eintrag für $USER_NAME wurde in /etc/passwd geschrieben mit zsh als Shell."
fi
# Repository klonen
REPO_DIR="$USER_HOME/Ubuntu-Hyprland"
sudo -u "$USER_NAME" git clone -b 24.04 https://github.com/JaKooLit/Ubuntu-Hyprland.git "$REPO_DIR"
# Ordner nach ~/.oh-my-zsh/themes kopieren
THEME_SRC="$REPO_DIR/assets/add_zsh_theme"
THEME_DEST="$USER_HOME/.oh-my-zsh/themes"
if [[ -d "$THEME_SRC" ]]; then
sudo -u "$USER_NAME" mkdir -p "$THEME_DEST"
sudo -u "$USER_NAME" cp -r "$THEME_SRC"/* "$THEME_DEST/"
echo "🎨 ZSH-Theme wurde nach $THEME_DEST kopiert."
else
echo "⚠️ Fehler: Theme-Ordner wurde nicht gefunden!"
fi
# Repository löschen
rm -rf "$REPO_DIR"
# /etc/profile in /etc/zsh/zprofile einfügen, falls nicht bereits vorhanden
if ! grep -q "source /etc/profile" /etc/zsh/zprofile; then
echo "source /etc/profile" >>/etc/zsh/zprofile
echo "🔧 'source /etc/profile' wurde in /etc/zsh/zprofile hinzugefügt."
else
echo " 'source /etc/profile' ist bereits in /etc/zsh/zprofile vorhanden."
fi
# Den tatsächlichen Benutzer ermitteln, der das Skript mit sudo ausführt
if [[ -n "$SUDO_USER" ]]; then
USER_HOME=$(eval echo "~$SUDO_USER")
else
USER_HOME="$HOME"
fi
# Pfad zur .zshrc-Datei des tatsächlichen Benutzers
ZSHRC_FILE="$USER_HOME/.zshrc"
# Sicherstellen, dass die Datei existiert
if [[ -f "$ZSHRC_FILE" ]]; then
# Zeilen mit "fastfetch" am Anfang auskommentieren
sed -i '/^fastfetch/ s/^/#/' "$ZSHRC_FILE"
# Prüfen, ob "neofetch" bereits in der Datei steht
if ! grep -q "^neofetch$" "$ZSHRC_FILE"; then
# Zwei Zeilenumbrüche vor und ein Zeilenumbruch nach "neofetch" hinzufügen
echo -e "\n\nneofetch\n" >> "$ZSHRC_FILE"
fi
echo "Die Änderungen wurden erfolgreich vorgenommen."
else
echo "Die Datei $ZSHRC_FILE wurde nicht gefunden."
fi
fi fi
# Repository klonen echo "✅ Shell wurde erfolgreich auf ZSH gesetzt! Zum Anwenden, neue Terminal-Sitzung öffnen."
REPO_DIR="$USER_HOME/Ubuntu-Hyprland"
sudo -u "$USER_NAME" git clone -b 24.04 https://github.com/JaKooLit/Ubuntu-Hyprland.git "$REPO_DIR"
# Ordner nach ~/.oh-my-zsh/themes kopieren
THEME_SRC="$REPO_DIR/assets/add_zsh_theme"
THEME_DEST="$USER_HOME/.oh-my-zsh/themes"
if [[ -d "$THEME_SRC" ]]; then
sudo -u "$USER_NAME" mkdir -p "$THEME_DEST"
sudo -u "$USER_NAME" cp -r "$THEME_SRC"/* "$THEME_DEST/"
echo "🎨 ZSH-Theme wurde nach $THEME_DEST kopiert."
else
echo "⚠️ Fehler: Theme-Ordner wurde nicht gefunden!"
fi
# Repository löschen
rm -rf "$REPO_DIR"
# /etc/profile in /etc/zsh/zprofile einfügen, falls nicht bereits vorhanden
if ! grep -q "source /etc/profile" /etc/zsh/zprofile; then
echo "source /etc/profile" >>/etc/zsh/zprofile
echo "🔧 'source /etc/profile' wurde in /etc/zsh/zprofile hinzugefügt."
else
echo " 'source /etc/profile' ist bereits in /etc/zsh/zprofile vorhanden."
fi
# Den tatsächlichen Benutzer ermitteln, der das Skript mit sudo ausführt
if [[ -n "$SUDO_USER" ]]; then
USER_HOME=$(eval echo "~$SUDO_USER")
else
USER_HOME="$HOME"
fi
# Pfad zur .zshrc-Datei des tatsächlichen Benutzers
ZSHRC_FILE="$USER_HOME/.zshrc"
# Sicherstellen, dass die Datei existiert
if [[ -f "$ZSHRC_FILE" ]]; then
# Zeilen mit "fastfetch" am Anfang auskommentieren
sed -i '/^fastfetch/ s/^/#/' "$ZSHRC_FILE"
# Prüfen, ob "neofetch" bereits in der Datei steht
if ! grep -q "^neofetch$" "$ZSHRC_FILE"; then
# Zwei Zeilenumbrüche vor und ein Zeilenumbruch nach "neofetch" hinzufügen
echo -e "\n\nneofetch\n" >> "$ZSHRC_FILE"
fi
echo "Die Änderungen wurden erfolgreich vorgenommen."
else
echo "Die Datei $ZSHRC_FILE wurde nicht gefunden."
fi
echo "✅ Installation abgeschlossen!"

View File

@ -2,46 +2,52 @@
# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird # Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird
if [[ $EUID -ne 0 ]]; then if [[ $EUID -ne 0 ]]; then
echo "Dieses Skript muss als root ausgeführt werden." echo "Dieses Skript muss als root ausgeführt werden."
exit 1 exit 1
fi fi
# SDDM-Konfigurationsdatei in sddm.conf.d erstellen read -p "❓ Soll SDDM so konfiguriert werden, dass Domänenbenutzer angezeigt werden? (j/n) [n]: " answer
SDDM_CONF_DIR="/etc/sddm.conf.d" answer=${answer,,} # In Kleinbuchstaben umwandeln
SDDM_CUSTOM_CONF="$SDDM_CONF_DIR/custom.conf" answer=${answer:-n} # Standardwert 'n', falls leer
mkdir -p "$SDDM_CONF_DIR"
# Bestehende Konfiguration sichern und anpassen if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
if [[ -f "$SDDM_CUSTOM_CONF" ]]; then # SDDM-Konfigurationsdatei in sddm.conf.d erstellen
sed -i '/MaximumUid/d' "$SDDM_CUSTOM_CONF" SDDM_CONF_DIR="/etc/sddm.conf.d"
sed -i '/MinimumUid/d' "$SDDM_CUSTOM_CONF" SDDM_CUSTOM_CONF="$SDDM_CONF_DIR/ad_login.conf"
sed -i '/HideShells/d' "$SDDM_CUSTOM_CONF" mkdir -p "$SDDM_CONF_DIR"
echo "MaximumUid=9999999999" >>"$SDDM_CUSTOM_CONF"
echo "MinimumUid=1000" >>"$SDDM_CUSTOM_CONF" # Bestehende Konfiguration sichern und anpassen
echo "HideShells=/sbin/nologin,/bin/false,/usr/sbin/nologin" >>"$SDDM_CUSTOM_CONF" if [[ -f "$SDDM_CUSTOM_CONF" ]]; then
else sed -i '/MaximumUid/d' "$SDDM_CUSTOM_CONF"
cat <<EOF >"$SDDM_CUSTOM_CONF" sed -i '/MinimumUid/d' "$SDDM_CUSTOM_CONF"
sed -i '/HideShells/d' "$SDDM_CUSTOM_CONF"
echo "MaximumUid=99999999999999999999" >>"$SDDM_CUSTOM_CONF"
echo "MinimumUid=1000" >>"$SDDM_CUSTOM_CONF"
echo "HideShells=/sbin/nologin,/bin/false,/usr/sbin/nologin" >>"$SDDM_CUSTOM_CONF"
else
cat <<EOF >"$SDDM_CUSTOM_CONF"
[Users] [Users]
MaximumUid=9999999999 MaximumUid=999999999999999999
MinimumUid=1000 MinimumUid=1000
HideShells=/sbin/nologin,/bin/false,/usr/sbin/nologin HideShells=/sbin/nologin,/bin/false,/usr/sbin/nologin
EOF EOF
fi
# SSSD-Konfiguration anpassen, falls die Datei existiert
SSSD_CONF="/etc/sssd/sssd.conf"
if [[ -f "$SSSD_CONF" ]]; then
if grep -q "^enumerate" "$SSSD_CONF"; then
sed -i 's/^enumerate.*/enumerate = false/' "$SSSD_CONF"
else
echo "enumerate = false" >>"$SSSD_CONF"
fi fi
# Berechtigungen für SSSD-Konfigurationsdatei setzen
chmod 600 "$SSSD_CONF" # SSSD-Konfiguration anpassen, falls die Datei existiert
SSSD_CONF="/etc/sssd/sssd.conf"
if [[ -f "$SSSD_CONF" ]]; then
if grep -q "^enumerate" "$SSSD_CONF"; then
sed -i 's/^enumerate.*/enumerate = false/' "$SSSD_CONF"
else
echo "enumerate = false" >>"$SSSD_CONF"
fi
# Berechtigungen für SSSD-Konfigurationsdatei setzen
chmod 600 "$SSSD_CONF"
fi
# SSSD und SDDM neu starten
systemctl restart sssd
systemctl restart sddm
fi fi
# SSSD und SDDM neu starten echo "✅ Konfiguration von SDDM und sssd abgeschlossen!"
systemctl restart sssd
systemctl restart sddm
echo "SDDM wurde so konfiguriert, dass lokale und bereits angemeldete Domänenbenutzer angezeigt werden."

View File

@ -2,9 +2,9 @@
set -e # Skript bricht bei Fehlern ab set -e # Skript bricht bei Fehlern ab
# Sicherstellen, dass das Skript **nicht** als root ausgeführt wird # Root-Rechte prüfen
if [[ $EUID -eq 0 ]]; then if [ "$(id -u)" -eq 0 ]; then
echo "Bitte **nicht** als root oder mit sudo ausführen! Das Skript fordert sudo nur dort an, wo es benötigt wird." echo "❌ Bitte nicht als root ausführen! Das Skript nutzt sudo, falls nötig."
exit 1 exit 1
fi fi
@ -12,91 +12,126 @@ fi
echo "🔄 System wird aktualisiert..." echo "🔄 System wird aktualisiert..."
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
echo "🔄 Entferne Pakete..." # Unnötige Pakete entfernen
read -p "❓ Sollen unnötige KDE-Pakete entfernt werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
sudo apt remove -y firefox kmahjongg kmines kpat ksudoku nextcloud-desktop skanlite thunderbird virtualbox if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
echo "🔄 Entferne Pakete..."
echo "🔄 Installiere Pakete..." sudo apt remove -y kmahjongg kmines kpat ksudoku nextcloud-desktop skanlite thunderbird virtualbox
sudo apt update && sudo apt install -y flatpak neovim ufw rfkill xdg-user-dirs rsync maliit-keyboard ffmpeg printer-driver-* clamav clamav-freshclam clamav-docs clamav-daemon bleachbit network-manager-gnome
sudo ufw enable
# Flatpak Flathub-Repo hinzufügen
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
# Portmaster installieren
wget -O /tmp/portmaster-installer.deb https://updates.safing.io/latest/linux_amd64/packages/portmaster-installer.deb
sudo apt install -y /tmp/portmaster-installer.deb
rm /tmp/portmaster-installer.deb
# Waterfox-Installation
echo "🌍 Waterfox wird installiert..."
sudo install -d -m 0755 /etc/apt/keyrings
echo 'deb http://download.opensuse.org/repositories/home:/hawkeye116477:/waterfox/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/home:hawkeye116477:waterfox.list
curl -fsSL https://download.opensuse.org/repositories/home:hawkeye116477:waterfox/xUbuntu_24.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_hawkeye116477_waterfox.gpg > /dev/null
sudo apt update && sudo apt install -y waterfox
# Waterfox als Standardbrowser setzen
echo "🌍 Setze Waterfox als Standardbrowser..."
if command -v xdg-settings >/dev/null 2>&1; then
xdg-settings set default-web-browser waterfox.desktop
echo "✅ Waterfox wurde als Standardbrowser gesetzt."
# Standardanwendungen für spezifische Dateitypen setzen
xdg-mime default waterfox.desktop text/html
xdg-mime default waterfox.desktop application/xhtml+xml
xdg-mime default waterfox.desktop x-scheme-handler/http
xdg-mime default waterfox.desktop x-scheme-handler/https
else
echo "❌ 'xdg-settings' ist nicht verfügbar. Bitte manuell den Standardbrowser setzen."
fi fi
# Hyprland User Bindings echo " Firewall (ufw) wird installiert..."
HYPR_CONFIG_DIR="$HOME/.config/hypr/UserConfigs" sudo apt install -y ufw
mkdir -p "$HYPR_CONFIG_DIR" sudo ufw
# Keybinds hinzufügen (falls nicht vorhanden) echo " Virenschutz (clamav) wird installiert..."
declare -A KEYBINDS=( sudo apt install -y enable clamav clamav-freshclam clamav-docs clamav-daemon
["bindr = \$mainMod, \$mainMod_L, exec, pkill rofi || rofi -show drun -modi drun,filebrowser,run,window"]="rofi menu"
["bindr = \$mainMod, L, exec, \$scriptsDir/LockScreen.sh"]="screen lock"
["bindr = \$mainMod, V, exec, \$scriptsDir/ClipManager.sh"]="Clipboard Manager"
)
for BIND in "${!KEYBINDS[@]}"; do echo " Installiere Flatpak..."
FULL_BIND="$BIND # ${KEYBINDS[$BIND]}" sudo apt install -y flatpak
if ! grep -Fxq "$FULL_BIND" "$HYPR_CONFIG_DIR/UserKeybinds.conf" 2>/dev/null; then sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
echo "$FULL_BIND" >>"$HYPR_CONFIG_DIR/UserKeybinds.conf"
echo "✅ Keybind hinzugefügt: ${KEYBINDS[$BIND]}" echo "🔄 Installiere nützliche Pakete..."
sudo apt install -y neovim rfkill xdg-user-dirs rsync maliit-keyboard ffmpeg printer-driver-* bleachbit network-manager-gnome
# Portmaster installieren
read -p "❓ Soll Portmaster installiert werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
wget -O /tmp/portmaster-installer.deb https://updates.safing.io/latest/linux_amd64/packages/portmaster-installer.deb
sudo apt install -y /tmp/portmaster-installer.deb
rm /tmp/portmaster-installer.deb
echo "✅ Portmaster wurde installiert!"
fi
# Waterfox-Installation
read -p "❓ Soll Firefox durch Waterfox ersetzt werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
echo "🌍 Waterfox wird installiert..."
sudo apt remove -y firefox
sudo install -d -m 0755 /etc/apt/keyrings
echo 'deb http://download.opensuse.org/repositories/home:/hawkeye116477:/waterfox/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/home:hawkeye116477:waterfox.list
curl -fsSL https://download.opensuse.org/repositories/home:hawkeye116477:waterfox/xUbuntu_24.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_hawkeye116477_waterfox.gpg >/dev/null
sudo apt update && sudo apt install -y waterfox
echo "✅ Waterfox wurde installiert!"
# Waterfox als Standardbrowser setzen
echo "🌍 Setze Waterfox als Standardbrowser..."
if command -v xdg-settings >/dev/null 2 >&1; then
xdg-settings set default-web-browser waterfox.desktop
echo "✅ Waterfox wurde als Standardbrowser gesetzt."
# Standardanwendungen für spezifische Dateitypen setzen
xdg-mime default waterfox.desktop text/html
xdg-mime default waterfox.desktop application/xhtml+xml
xdg-mime default waterfox.desktop x-scheme-handler/http
xdg-mime default waterfox.desktop x-scheme-handler/https
else else
echo " Keybind existiert bereits: ${KEYBINDS[$BIND]}" echo "❌ 'xdg-settings' ist nicht verfügbar. Bitte manuell den Standardbrowser setzen."
fi fi
done fi
echo "🔄 Füge Autostart-Apps hinzu..." # Hyprland Anpassungen
# Pfad zur Konfigurationsdatei read -p "❓ Sollen Anpassungen an den Hyprland-Configs vorgenomen werden? (j/n) [n]: " answer
CONFIG_FILE="$HOME/.config/hypr/UserConfigs/Startup_Apps.conf" answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
# Zeile, die hinzugefügt werden soll if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
LINE_TO_ADD="exec-once = tuxedo-control-center --tray" # Hyprland User Bindings
HYPR_CONFIG_DIR="$HOME/.config/hypr/UserConfigs"
mkdir -p "$HYPR_CONFIG_DIR"
# Überprüfen, ob die Datei existiert # Keybinds hinzufügen (falls nicht vorhanden)
if [ -f "$CONFIG_FILE" ]; then declare -A KEYBINDS=(
# Überprüfen, ob die Zeile bereits existiert ["bindr = \$mainMod, \$mainMod_L, exec, pkill rofi || rofi -show drun -modi drun,filebrowser,run,window"]="rofi menu"
if ! grep -Fxq "$LINE_TO_ADD" "$CONFIG_FILE"; then ["bindr = \$mainMod, L, exec, \$scriptsDir/LockScreen.sh"]="screen lock"
# Zeile hinzufügen ["bindr = \$mainMod, V, exec, \$scriptsDir/ClipManager.sh"]="Clipboard Manager"
echo "$LINE_TO_ADD" >> "$CONFIG_FILE" )
echo "Zeile wurde erfolgreich hinzugefügt."
for BIND in "${!KEYBINDS[@]}"; do
FULL_BIND="$BIND # ${KEYBINDS[$BIND]}"
if ! grep -Fxq "$FULL_BIND" "$HYPR_CONFIG_DIR/UserKeybinds.conf" 2 >/dev/null; then
echo "$FULL_BIND" >>"$HYPR_CONFIG_DIR/UserKeybinds.conf"
echo "✅ Keybind hinzugefügt: ${KEYBINDS[$BIND]}"
else
echo " Keybind existiert bereits: ${KEYBINDS[$BIND]}"
fi
done
echo "🔄 Füge Autostart-Apps hinzu..."
# Pfad zur Konfigurationsdatei
CONFIG_FILE="$HOME/.config/hypr/UserConfigs/Startup_Apps.conf"
# Zeile, die hinzugefügt werden soll
LINE_TO_ADD="exec-once = tuxedo-control-center --tray"
# Überprüfen, ob die Datei existiert
if [ -f "$CONFIG_FILE" ]; then
# Überprüfen, ob die Zeile bereits existiert
if ! grep -Fxq "$LINE_TO_ADD" "$CONFIG_FILE"; then
# Zeile hinzufügen
echo "$LINE_TO_ADD" >>"$CONFIG_FILE"
echo "Zeile wurde erfolgreich hinzugefügt."
else
echo "Die Zeile existiert bereits in der Datei."
fi
else else
echo "Die Zeile existiert bereits in der Datei." echo "Die Datei $CONFIG_FILE existiert nicht."
fi fi
else
echo "Die Datei $CONFIG_FILE existiert nicht."
fi fi
# Standardvorlagen ablegen # Standardvorlagen ablegen
echo "📂 Standardvorlagen werden im Vorlagen-Ordner erstellt..." echo "📂 Standardvorlagen werden im Vorlagen-Ordner erstellt..."
TEMPLATES_DIR=$(xdg-user-dir TEMPLATES 2>/dev/null || echo "$HOME/Vorlagen") TEMPLATES_DIR=$(xdg-user-dir TEMPLATES 2 >/dev/null || echo "$HOME/Vorlagen")
mkdir -p "$TEMPLATES_DIR" mkdir -p "$TEMPLATES_DIR"
# Vorlagenliste # Vorlagenliste
@ -124,66 +159,72 @@ TARGET_DIR="$HOME/.config/hypr/UserScripts"
CONFIG_DIR="$HOME/.config/hypr/UserConfigs" CONFIG_DIR="$HOME/.config/hypr/UserConfigs"
USER_KEYBINDS_FILE="$CONFIG_DIR/UserKeybinds.conf" # Definition an der richtigen Stelle USER_KEYBINDS_FILE="$CONFIG_DIR/UserKeybinds.conf" # Definition an der richtigen Stelle
# Bereinige fälschlicherweise kopierte Dateien read -p "❓ Sollen Anpassungen an den Users-Dirs in den Hyprland-Skripten vorgenommen werden? (j/n) [n]: " answer
echo "📂 Überprüfe und bereinige Dateien im Verzeichnis $TARGET_DIR..." answer=${answer,,} # In Kleinbuchstaben umwandeln
if [[ -d "$TARGET_DIR" ]]; then answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
# Bereinige fälschlicherweise kopierte Dateien
echo "📂 Überprüfe und bereinige Dateien im Verzeichnis $TARGET_DIR..."
if [[ -d "$TARGET_DIR" ]]; then
for FILE in "$TARGET_DIR"/*; do
if [[ -f "$FILE" ]]; then
BASENAME=$(basename "$FILE")
SOURCE_FILE="$SOURCE_DIR/$BASENAME"
# Prüfen, ob die Datei im Quellverzeichnis existiert und angepasst werden musste
if [[ -f "$SOURCE_FILE" ]] && ! grep -qE '\$HOME/Desktop|\$HOME/Downloads|\$HOME/Documents|\$HOME/Pictures|\$HOME/Music|\$HOME/Videos' "$SOURCE_FILE"; then
echo "🗑️ Entferne fälschlicherweise kopierte Datei: $BASENAME"
rm "$FILE"
# Rückgängig machen der falschen Verweise in UserKeybinds.conf
if [[ -f "$USER_KEYBINDS_FILE" ]]; then
echo "🔄 Setze falschen Verweis für $BASENAME in $USER_KEYBINDS_FILE zurück..."
sed -i "s|\$UserScripts/$BASENAME|\$scriptsDir/$BASENAME|g" "$USER_KEYBINDS_FILE"
echo "✅ Verweis für $BASENAME zurückgesetzt."
fi
else
echo "✅ Datei $BASENAME ist korrekt und bleibt erhalten."
fi
fi
done
else
echo "⚠️ Zielverzeichnis $TARGET_DIR existiert nicht. Keine Bereinigung erforderlich."
fi
# Kopiere nur relevante Dateien und behalte die Verzeichnisstruktur bei
echo "📂 Verarbeite Dateien im Verzeichnis $SOURCE_DIR..."
mkdir -p "$TARGET_DIR"
COPIED_FILES=() # Array, um die tatsächlich kopierten Dateien zu speichern
if [[ -d "$SOURCE_DIR" ]]; then
find "$SOURCE_DIR" -type f | while read -r FILE; do
RELATIVE_PATH="${FILE#$SOURCE_DIR/}" # Relativer Pfad zur Datei
TARGET_PATH="$TARGET_DIR/$RELATIVE_PATH"
# Prüfen, ob die Datei angepasst werden muss
if grep -qE '\$HOME/Desktop|\$HOME/Downloads|\$HOME/Documents|\$HOME/Pictures|\$HOME/Music|\$HOME/Videos|/home/[a-zA-Z0-9._-]*/Desktop|/home/[a-zA-Z0-9._-]*/Downloads|/home/[a-zA-Z0-9._-]*/Documents|/home/[a-zA-Z0-9._-]*/Pictures|/home/[a-zA-Z0-9._-]*/Music|/home/[a-zA-Z0-9._-]*/Videos|\$\(xdg-user-dir\)/Desktop|\$\(xdg-user-dir\)/Downloads|\$\(xdg-user-dir\)/Documents|\$\(xdg-user-dir\)/Pictures|\$\(xdg-user-dir\)/Music|\$\(xdg-user-dir\)/Videos' "$FILE"; then
echo "🔄 Kopiere Datei zur Anpassung: $RELATIVE_PATH"
mkdir -p "$(dirname "$TARGET_PATH")" # Zielverzeichnis erstellen
cp "$FILE" "$TARGET_PATH"
COPIED_FILES+=("$RELATIVE_PATH") # Relativen Pfad speichern
else
echo " Datei $RELATIVE_PATH benötigt keine Anpassung. Überspringe Kopieren."
fi
done
else
echo "⚠️ Quellverzeichnis $SOURCE_DIR existiert nicht. Überspringe Verarbeitung."
fi
# Ersetzungen in allen Dateien im Verzeichnis UserScripts vornehmen
echo "🔄 Ersetze absolute Pfade, XDG-Verzeichnisse und Platzhalter in allen Dateien im Verzeichnis $TARGET_DIR..."
for FILE in "$TARGET_DIR"/*; do for FILE in "$TARGET_DIR"/*; do
if [[ -f "$FILE" ]]; then if [[ -f "$FILE" ]]; then
BASENAME=$(basename "$FILE") echo "Verarbeite Datei: $FILE"
SOURCE_FILE="$SOURCE_DIR/$BASENAME"
# Prüfen, ob die Datei im Quellverzeichnis existiert und angepasst werden musste # Ersetzungen vornehmen
if [[ -f "$SOURCE_FILE" ]] && ! grep -qE '\$HOME/Desktop|\$HOME/Downloads|\$HOME/Documents|\$HOME/Pictures|\$HOME/Music|\$HOME/Videos' "$SOURCE_FILE"; then sed -i \
echo "🗑️ Entferne fälschlicherweise kopierte Datei: $BASENAME"
rm "$FILE"
# Rückgängig machen der falschen Verweise in UserKeybinds.conf
if [[ -f "$USER_KEYBINDS_FILE" ]]; then
echo "🔄 Setze falschen Verweis für $BASENAME in $USER_KEYBINDS_FILE zurück..."
sed -i "s|\$UserScripts/$BASENAME|\$scriptsDir/$BASENAME|g" "$USER_KEYBINDS_FILE"
echo "✅ Verweis für $BASENAME zurückgesetzt."
fi
else
echo "✅ Datei $BASENAME ist korrekt und bleibt erhalten."
fi
fi
done
else
echo "⚠️ Zielverzeichnis $TARGET_DIR existiert nicht. Keine Bereinigung erforderlich."
fi
# Kopiere nur relevante Dateien und behalte die Verzeichnisstruktur bei
echo "📂 Verarbeite Dateien im Verzeichnis $SOURCE_DIR..."
mkdir -p "$TARGET_DIR"
COPIED_FILES=() # Array, um die tatsächlich kopierten Dateien zu speichern
if [[ -d "$SOURCE_DIR" ]]; then
find "$SOURCE_DIR" -type f | while read -r FILE; do
RELATIVE_PATH="${FILE#$SOURCE_DIR/}" # Relativer Pfad zur Datei
TARGET_PATH="$TARGET_DIR/$RELATIVE_PATH"
# Prüfen, ob die Datei angepasst werden muss
if grep -qE '\$HOME/Desktop|\$HOME/Downloads|\$HOME/Documents|\$HOME/Pictures|\$HOME/Music|\$HOME/Videos|/home/[a-zA-Z0-9._-]*/Desktop|/home/[a-zA-Z0-9._-]*/Downloads|/home/[a-zA-Z0-9._-]*/Documents|/home/[a-zA-Z0-9._-]*/Pictures|/home/[a-zA-Z0-9._-]*/Music|/home/[a-zA-Z0-9._-]*/Videos|\$\(xdg-user-dir\)/Desktop|\$\(xdg-user-dir\)/Downloads|\$\(xdg-user-dir\)/Documents|\$\(xdg-user-dir\)/Pictures|\$\(xdg-user-dir\)/Music|\$\(xdg-user-dir\)/Videos' "$FILE"; then
echo "🔄 Kopiere Datei zur Anpassung: $RELATIVE_PATH"
mkdir -p "$(dirname "$TARGET_PATH")" # Zielverzeichnis erstellen
cp "$FILE" "$TARGET_PATH"
COPIED_FILES+=("$RELATIVE_PATH") # Relativen Pfad speichern
else
echo " Datei $RELATIVE_PATH benötigt keine Anpassung. Überspringe Kopieren."
fi
done
else
echo "⚠️ Quellverzeichnis $SOURCE_DIR existiert nicht. Überspringe Verarbeitung."
fi
# Ersetzungen in allen Dateien im Verzeichnis UserScripts vornehmen
echo "🔄 Ersetze absolute Pfade, XDG-Verzeichnisse und Platzhalter in allen Dateien im Verzeichnis $TARGET_DIR..."
for FILE in "$TARGET_DIR"/*; do
if [[ -f "$FILE" ]]; then
echo "Verarbeite Datei: $FILE"
# Ersetzungen vornehmen
sed -i \
-e 's|\$HOME/Desktop|$(xdg-user-dir DESKTOP)|g' \ -e 's|\$HOME/Desktop|$(xdg-user-dir DESKTOP)|g' \
-e 's|\$HOME/Downloads|$(xdg-user-dir DOWNLOAD)|g' \ -e 's|\$HOME/Downloads|$(xdg-user-dir DOWNLOAD)|g' \
-e 's|\$HOME/Documents|$(xdg-user-dir DOCUMENTS)|g' \ -e 's|\$HOME/Documents|$(xdg-user-dir DOCUMENTS)|g' \
@ -204,29 +245,30 @@ for FILE in "$TARGET_DIR"/*; do
-e 's|$(xdg-user-dir)/Videos|$(xdg-user-dir VIDEOS)|g' \ -e 's|$(xdg-user-dir)/Videos|$(xdg-user-dir VIDEOS)|g' \
"$FILE" "$FILE"
echo "✅ Ersetzungen in $FILE abgeschlossen." echo "✅ Ersetzungen in $FILE abgeschlossen."
fi fi
done
# Verweise in UserKeybinds.conf anpassen
if [[ -f "$USER_KEYBINDS_FILE" ]]; then
echo "🔄 Passe Verweise in $USER_KEYBINDS_FILE an..."
for SCRIPT in "${COPIED_FILES[@]}"; do
# Ersetze $scriptsDir/<Dateiname> durch $UserScripts/<Dateiname>
sed -i "s|\$scriptsDir/$SCRIPT|\$UserScripts/$SCRIPT|g" "$USER_KEYBINDS_FILE"
echo "✅ Verweis für $SCRIPT angepasst."
done done
else
echo "⚠️ Datei $USER_KEYBINDS_FILE existiert nicht. Überspringe Anpassung der Verweise."
fi
# Überprüfen, ob der Ordner existiert # Verweise in UserKeybinds.conf anpassen
if [ -d "$(xdg-user-dir)/Pictures" ]; then if [[ -f "$USER_KEYBINDS_FILE" ]]; then
echo "📂 Verschiebe $(xdg-user-dir)/Pictures nach $(xdg-user-dir PICTURES)..." echo "🔄 Passe Verweise in $USER_KEYBINDS_FILE an..."
rsync -av --ignore-existing "$(xdg-user-dir)/Pictures/" "$(xdg-user-dir PICTURES)/" for SCRIPT in "${COPIED_FILES[@]}"; do
rm -r "$(xdg-user-dir)/Pictures/" # Ersetze $scriptsDir/<Dateiname> durch $UserScripts/<Dateiname>
else sed -i "s|\$scriptsDir/$SCRIPT|\$UserScripts/$SCRIPT|g" "$USER_KEYBINDS_FILE"
echo "📂 Der Ordner $(xdg-user-dir)/Pictures existiert nicht. Kein Verschieben notwendig." echo "✅ Verweis für $SCRIPT angepasst."
done
else
echo "⚠️ Datei $USER_KEYBINDS_FILE existiert nicht. Überspringe Anpassung der Verweise."
fi
# Überprüfen, ob der Ordner existiert
if [ -d "$(xdg-user-dir)/Pictures" ]; then
echo "📂 Verschiebe $(xdg-user-dir)/Pictures nach $(xdg-user-dir PICTURES)..."
rsync -av --ignore-existing "$(xdg-user-dir)/Pictures/" "$(xdg-user-dir PICTURES)/"
rm -r "$(xdg-user-dir)/Pictures/"
else
echo "📂 Der Ordner $(xdg-user-dir)/Pictures existiert nicht. Kein Verschieben notwendig."
fi
fi fi
echo "✅ Skript erfolgreich ausgeführt!" echo "✅ Skript erfolgreich ausgeführt!"

View File

@ -2,7 +2,7 @@
# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird # Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird
if [[ $EUID -ne 0 ]]; then if [[ $EUID -ne 0 ]]; then
echo "Dieses Skript muss als root ausgeführt werden." echo "Dieses Skript muss als root ausgeführt werden."
exit 1 exit 1
fi fi
@ -10,10 +10,23 @@ fi
apt update && apt upgrade -y apt update && apt upgrade -y
# Steam-Installation # Steam-Installation
dpkg --add-architecture i386 read -p "❓ Soll Steam installiert werden? (j/n) [n]: " answer
apt update answer=${answer,,} # In Kleinbuchstaben umwandeln
apt install -y wget curl answer=${answer:-n} # Standardwert 'n', falls leer
apt install -y steam lutris if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
dpkg --add-architecture i386
apt update
apt install -y steam
fi
echo "✅ Installation von Steam und Lutris abgeschlossen!" # Lutris-Installation
read -p "❓ Soll Lutris installiert werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
apt install -y lutris
fi
echo "✅ Skript abgeschlossen!"