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,75 +2,80 @@
# 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
cp /etc/passwd /etc/passwd.bak
if grep -q "^$USER_NAME:" /etc/passwd; then
# Existierenden Eintrag aktualisieren # Existierenden Eintrag aktualisieren
sed -i "/^$USER_NAME:/s|[^:]*$|/bin/zsh|" /etc/passwd sed -i "/^$USER_NAME:/s|[^:]*$|/bin/zsh|" /etc/passwd
echo "Shell für $USER_NAME wurde auf zsh aktualisiert." echo " Shell für $USER_NAME wurde auf zsh aktualisiert."
else else
# Neuen Eintrag hinzufügen # Neuen Eintrag hinzufügen
UPDATED_ENTRY=$(echo "$USER_ENTRY" | awk -F: -v OFS=: '{ $NF="/bin/zsh"; print }') UPDATED_ENTRY=$(echo "$USER_ENTRY" | awk -F: -v OFS=: '{ $NF="/bin/zsh"; print }')
echo "$UPDATED_ENTRY" >>/etc/passwd echo "$UPDATED_ENTRY" >>/etc/passwd
echo "Eintrag für $USER_NAME wurde in /etc/passwd geschrieben mit zsh als Shell." echo " Eintrag für $USER_NAME wurde in /etc/passwd geschrieben mit zsh als Shell."
fi fi
# Repository klonen # Repository klonen
REPO_DIR="$USER_HOME/Ubuntu-Hyprland" REPO_DIR="$USER_HOME/Ubuntu-Hyprland"
sudo -u "$USER_NAME" git clone -b 24.04 https://github.com/JaKooLit/Ubuntu-Hyprland.git "$REPO_DIR" 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 # Ordner nach ~/.oh-my-zsh/themes kopieren
THEME_SRC="$REPO_DIR/assets/add_zsh_theme" THEME_SRC="$REPO_DIR/assets/add_zsh_theme"
THEME_DEST="$USER_HOME/.oh-my-zsh/themes" THEME_DEST="$USER_HOME/.oh-my-zsh/themes"
if [[ -d "$THEME_SRC" ]]; then if [[ -d "$THEME_SRC" ]]; then
sudo -u "$USER_NAME" mkdir -p "$THEME_DEST" sudo -u "$USER_NAME" mkdir -p "$THEME_DEST"
sudo -u "$USER_NAME" cp -r "$THEME_SRC"/* "$THEME_DEST/" sudo -u "$USER_NAME" cp -r "$THEME_SRC"/* "$THEME_DEST/"
echo "🎨 ZSH-Theme wurde nach $THEME_DEST kopiert." echo "🎨 ZSH-Theme wurde nach $THEME_DEST kopiert."
else else
echo "⚠️ Fehler: Theme-Ordner wurde nicht gefunden!" echo "⚠️ Fehler: Theme-Ordner wurde nicht gefunden!"
fi fi
# Repository löschen # Repository löschen
rm -rf "$REPO_DIR" rm -rf "$REPO_DIR"
# /etc/profile in /etc/zsh/zprofile einfügen, falls nicht bereits vorhanden # /etc/profile in /etc/zsh/zprofile einfügen, falls nicht bereits vorhanden
if ! grep -q "source /etc/profile" /etc/zsh/zprofile; then if ! grep -q "source /etc/profile" /etc/zsh/zprofile; then
echo "source /etc/profile" >>/etc/zsh/zprofile echo "source /etc/profile" >>/etc/zsh/zprofile
echo "🔧 'source /etc/profile' wurde in /etc/zsh/zprofile hinzugefügt." echo "🔧 'source /etc/profile' wurde in /etc/zsh/zprofile hinzugefügt."
else else
echo " 'source /etc/profile' ist bereits in /etc/zsh/zprofile vorhanden." echo " 'source /etc/profile' ist bereits in /etc/zsh/zprofile vorhanden."
fi fi
# Den tatsächlichen Benutzer ermitteln, der das Skript mit sudo ausführt # Den tatsächlichen Benutzer ermitteln, der das Skript mit sudo ausführt
if [[ -n "$SUDO_USER" ]]; then if [[ -n "$SUDO_USER" ]]; then
USER_HOME=$(eval echo "~$SUDO_USER") USER_HOME=$(eval echo "~$SUDO_USER")
else else
USER_HOME="$HOME" USER_HOME="$HOME"
fi fi
# Pfad zur .zshrc-Datei des tatsächlichen Benutzers # Pfad zur .zshrc-Datei des tatsächlichen Benutzers
ZSHRC_FILE="$USER_HOME/.zshrc" ZSHRC_FILE="$USER_HOME/.zshrc"
# Sicherstellen, dass die Datei existiert # Sicherstellen, dass die Datei existiert
if [[ -f "$ZSHRC_FILE" ]]; then if [[ -f "$ZSHRC_FILE" ]]; then
# Zeilen mit "fastfetch" am Anfang auskommentieren # Zeilen mit "fastfetch" am Anfang auskommentieren
sed -i '/^fastfetch/ s/^/#/' "$ZSHRC_FILE" sed -i '/^fastfetch/ s/^/#/' "$ZSHRC_FILE"
@ -81,8 +86,9 @@ if [[ -f "$ZSHRC_FILE" ]]; then
fi fi
echo "Die Änderungen wurden erfolgreich vorgenommen." echo "Die Änderungen wurden erfolgreich vorgenommen."
else else
echo "Die Datei $ZSHRC_FILE wurde nicht gefunden." echo "Die Datei $ZSHRC_FILE wurde nicht gefunden."
fi
fi fi
echo "✅ Installation abgeschlossen!" echo "✅ Shell wurde erfolgreich auf ZSH gesetzt! Zum Anwenden, neue Terminal-Sitzung öffnen."

View File

@ -2,35 +2,40 @@
# 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
SDDM_CONF_DIR="/etc/sddm.conf.d"
SDDM_CUSTOM_CONF="$SDDM_CONF_DIR/ad_login.conf"
mkdir -p "$SDDM_CONF_DIR"
# Bestehende Konfiguration sichern und anpassen
if [[ -f "$SDDM_CUSTOM_CONF" ]]; then
sed -i '/MaximumUid/d' "$SDDM_CUSTOM_CONF" sed -i '/MaximumUid/d' "$SDDM_CUSTOM_CONF"
sed -i '/MinimumUid/d' "$SDDM_CUSTOM_CONF" sed -i '/MinimumUid/d' "$SDDM_CUSTOM_CONF"
sed -i '/HideShells/d' "$SDDM_CUSTOM_CONF" sed -i '/HideShells/d' "$SDDM_CUSTOM_CONF"
echo "MaximumUid=9999999999" >>"$SDDM_CUSTOM_CONF" echo "MaximumUid=99999999999999999999" >>"$SDDM_CUSTOM_CONF"
echo "MinimumUid=1000" >>"$SDDM_CUSTOM_CONF" echo "MinimumUid=1000" >>"$SDDM_CUSTOM_CONF"
echo "HideShells=/sbin/nologin,/bin/false,/usr/sbin/nologin" >>"$SDDM_CUSTOM_CONF" echo "HideShells=/sbin/nologin,/bin/false,/usr/sbin/nologin" >>"$SDDM_CUSTOM_CONF"
else else
cat <<EOF >"$SDDM_CUSTOM_CONF" 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 fi
# SSSD-Konfiguration anpassen, falls die Datei existiert # SSSD-Konfiguration anpassen, falls die Datei existiert
SSSD_CONF="/etc/sssd/sssd.conf" SSSD_CONF="/etc/sssd/sssd.conf"
if [[ -f "$SSSD_CONF" ]]; then if [[ -f "$SSSD_CONF" ]]; then
if grep -q "^enumerate" "$SSSD_CONF"; then if grep -q "^enumerate" "$SSSD_CONF"; then
sed -i 's/^enumerate.*/enumerate = false/' "$SSSD_CONF" sed -i 's/^enumerate.*/enumerate = false/' "$SSSD_CONF"
else else
@ -38,10 +43,11 @@ if [[ -f "$SSSD_CONF" ]]; then
fi fi
# Berechtigungen für SSSD-Konfigurationsdatei setzen # Berechtigungen für SSSD-Konfigurationsdatei setzen
chmod 600 "$SSSD_CONF" 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,34 +12,61 @@ 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..."
sudo apt remove -y kmahjongg kmines kpat ksudoku nextcloud-desktop skanlite thunderbird virtualbox
fi
echo "🔄 Installiere Pakete..." echo " Firewall (ufw) wird installiert..."
sudo apt install -y ufw
sudo ufw
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 echo " Virenschutz (clamav) wird installiert..."
sudo ufw enable sudo apt install -y enable clamav clamav-freshclam clamav-docs clamav-daemon
# Flatpak Flathub-Repo hinzufügen echo " Installiere Flatpak..."
sudo apt install -y flatpak
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
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 # Portmaster installieren
wget -O /tmp/portmaster-installer.deb https://updates.safing.io/latest/linux_amd64/packages/portmaster-installer.deb read -p "❓ Soll Portmaster installiert werden? (j/n) [n]: " answer
sudo apt install -y /tmp/portmaster-installer.deb answer=${answer,,} # In Kleinbuchstaben umwandeln
rm /tmp/portmaster-installer.deb 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 # Waterfox-Installation
echo "🌍 Waterfox wird installiert..." read -p "❓ Soll Firefox durch Waterfox ersetzt werden? (j/n) [n]: " answer
sudo install -d -m 0755 /etc/apt/keyrings answer=${answer,,} # In Kleinbuchstaben umwandeln
echo 'deb http://download.opensuse.org/repositories/home:/hawkeye116477:/waterfox/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/home:hawkeye116477:waterfox.list answer=${answer:-n} # Standardwert 'n', falls leer
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 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
# Waterfox als Standardbrowser setzen sudo apt update && sudo apt install -y waterfox
echo "🌍 Setze Waterfox als Standardbrowser..." echo "✅ Waterfox wurde installiert!"
if command -v xdg-settings >/dev/null 2>&1; then
# 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 xdg-settings set default-web-browser waterfox.desktop
echo "✅ Waterfox wurde als Standardbrowser gesetzt." echo "✅ Waterfox wurde als Standardbrowser gesetzt."
@ -48,55 +75,63 @@ if command -v xdg-settings >/dev/null 2>&1; then
xdg-mime default waterfox.desktop application/xhtml+xml 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/http
xdg-mime default waterfox.desktop x-scheme-handler/https xdg-mime default waterfox.desktop x-scheme-handler/https
else else
echo "❌ 'xdg-settings' ist nicht verfügbar. Bitte manuell den Standardbrowser setzen." echo "❌ 'xdg-settings' ist nicht verfügbar. Bitte manuell den Standardbrowser setzen."
fi
fi fi
# Hyprland User Bindings # Hyprland Anpassungen
HYPR_CONFIG_DIR="$HOME/.config/hypr/UserConfigs" read -p "❓ Sollen Anpassungen an den Hyprland-Configs vorgenomen werden? (j/n) [n]: " answer
mkdir -p "$HYPR_CONFIG_DIR" answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
# Keybinds hinzufügen (falls nicht vorhanden) if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
declare -A KEYBINDS=( # Hyprland User Bindings
["bindr = \$mainMod, \$mainMod_L, exec, pkill rofi || rofi -show drun -modi drun,filebrowser,run,window"]="rofi menu" HYPR_CONFIG_DIR="$HOME/.config/hypr/UserConfigs"
["bindr = \$mainMod, L, exec, \$scriptsDir/LockScreen.sh"]="screen lock" mkdir -p "$HYPR_CONFIG_DIR"
["bindr = \$mainMod, V, exec, \$scriptsDir/ClipManager.sh"]="Clipboard Manager"
)
for BIND in "${!KEYBINDS[@]}"; do # Keybinds hinzufügen (falls nicht vorhanden)
declare -A KEYBINDS=(
["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
FULL_BIND="$BIND # ${KEYBINDS[$BIND]}" FULL_BIND="$BIND # ${KEYBINDS[$BIND]}"
if ! grep -Fxq "$FULL_BIND" "$HYPR_CONFIG_DIR/UserKeybinds.conf" 2>/dev/null; then if ! grep -Fxq "$FULL_BIND" "$HYPR_CONFIG_DIR/UserKeybinds.conf" 2 >/dev/null; then
echo "$FULL_BIND" >>"$HYPR_CONFIG_DIR/UserKeybinds.conf" echo "$FULL_BIND" >>"$HYPR_CONFIG_DIR/UserKeybinds.conf"
echo "✅ Keybind hinzugefügt: ${KEYBINDS[$BIND]}" echo "✅ Keybind hinzugefügt: ${KEYBINDS[$BIND]}"
else else
echo " Keybind existiert bereits: ${KEYBINDS[$BIND]}" echo " Keybind existiert bereits: ${KEYBINDS[$BIND]}"
fi fi
done done
echo "🔄 Füge Autostart-Apps hinzu..." echo "🔄 Füge Autostart-Apps hinzu..."
# Pfad zur Konfigurationsdatei # Pfad zur Konfigurationsdatei
CONFIG_FILE="$HOME/.config/hypr/UserConfigs/Startup_Apps.conf" CONFIG_FILE="$HOME/.config/hypr/UserConfigs/Startup_Apps.conf"
# Zeile, die hinzugefügt werden soll # Zeile, die hinzugefügt werden soll
LINE_TO_ADD="exec-once = tuxedo-control-center --tray" LINE_TO_ADD="exec-once = tuxedo-control-center --tray"
# Überprüfen, ob die Datei existiert # Überprüfen, ob die Datei existiert
if [ -f "$CONFIG_FILE" ]; then if [ -f "$CONFIG_FILE" ]; then
# Überprüfen, ob die Zeile bereits existiert # Überprüfen, ob die Zeile bereits existiert
if ! grep -Fxq "$LINE_TO_ADD" "$CONFIG_FILE"; then if ! grep -Fxq "$LINE_TO_ADD" "$CONFIG_FILE"; then
# Zeile hinzufügen # Zeile hinzufügen
echo "$LINE_TO_ADD" >> "$CONFIG_FILE" echo "$LINE_TO_ADD" >>"$CONFIG_FILE"
echo "Zeile wurde erfolgreich hinzugefügt." echo "Zeile wurde erfolgreich hinzugefügt."
else else
echo "Die Zeile existiert bereits in der Datei." echo "Die Zeile existiert bereits in der Datei."
fi fi
else else
echo "Die Datei $CONFIG_FILE existiert nicht." echo "Die Datei $CONFIG_FILE existiert nicht."
fi
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,9 +159,15 @@ 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 for FILE in "$TARGET_DIR"/*; do
if [[ -f "$FILE" ]]; then if [[ -f "$FILE" ]]; then
BASENAME=$(basename "$FILE") BASENAME=$(basename "$FILE")
@ -148,16 +189,16 @@ if [[ -d "$TARGET_DIR" ]]; then
fi fi
fi fi
done done
else else
echo "⚠️ Zielverzeichnis $TARGET_DIR existiert nicht. Keine Bereinigung erforderlich." echo "⚠️ Zielverzeichnis $TARGET_DIR existiert nicht. Keine Bereinigung erforderlich."
fi fi
# Kopiere nur relevante Dateien und behalte die Verzeichnisstruktur bei # Kopiere nur relevante Dateien und behalte die Verzeichnisstruktur bei
echo "📂 Verarbeite Dateien im Verzeichnis $SOURCE_DIR..." echo "📂 Verarbeite Dateien im Verzeichnis $SOURCE_DIR..."
mkdir -p "$TARGET_DIR" mkdir -p "$TARGET_DIR"
COPIED_FILES=() # Array, um die tatsächlich kopierten Dateien zu speichern COPIED_FILES=() # Array, um die tatsächlich kopierten Dateien zu speichern
if [[ -d "$SOURCE_DIR" ]]; then if [[ -d "$SOURCE_DIR" ]]; then
find "$SOURCE_DIR" -type f | while read -r FILE; do find "$SOURCE_DIR" -type f | while read -r FILE; do
RELATIVE_PATH="${FILE#$SOURCE_DIR/}" # Relativer Pfad zur Datei RELATIVE_PATH="${FILE#$SOURCE_DIR/}" # Relativer Pfad zur Datei
TARGET_PATH="$TARGET_DIR/$RELATIVE_PATH" TARGET_PATH="$TARGET_DIR/$RELATIVE_PATH"
@ -172,13 +213,13 @@ if [[ -d "$SOURCE_DIR" ]]; then
echo " Datei $RELATIVE_PATH benötigt keine Anpassung. Überspringe Kopieren." echo " Datei $RELATIVE_PATH benötigt keine Anpassung. Überspringe Kopieren."
fi fi
done done
else else
echo "⚠️ Quellverzeichnis $SOURCE_DIR existiert nicht. Überspringe Verarbeitung." echo "⚠️ Quellverzeichnis $SOURCE_DIR existiert nicht. Überspringe Verarbeitung."
fi fi
# Ersetzungen in allen Dateien im Verzeichnis UserScripts vornehmen # Ersetzungen in allen Dateien im Verzeichnis UserScripts vornehmen
echo "🔄 Ersetze absolute Pfade, XDG-Verzeichnisse und Platzhalter in allen Dateien im Verzeichnis $TARGET_DIR..." 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
echo "Verarbeite Datei: $FILE" echo "Verarbeite Datei: $FILE"
@ -206,27 +247,28 @@ for FILE in "$TARGET_DIR"/*; do
echo "✅ Ersetzungen in $FILE abgeschlossen." echo "✅ Ersetzungen in $FILE abgeschlossen."
fi fi
done done
# Verweise in UserKeybinds.conf anpassen # Verweise in UserKeybinds.conf anpassen
if [[ -f "$USER_KEYBINDS_FILE" ]]; then if [[ -f "$USER_KEYBINDS_FILE" ]]; then
echo "🔄 Passe Verweise in $USER_KEYBINDS_FILE an..." echo "🔄 Passe Verweise in $USER_KEYBINDS_FILE an..."
for SCRIPT in "${COPIED_FILES[@]}"; do for SCRIPT in "${COPIED_FILES[@]}"; do
# Ersetze $scriptsDir/<Dateiname> durch $UserScripts/<Dateiname> # Ersetze $scriptsDir/<Dateiname> durch $UserScripts/<Dateiname>
sed -i "s|\$scriptsDir/$SCRIPT|\$UserScripts/$SCRIPT|g" "$USER_KEYBINDS_FILE" sed -i "s|\$scriptsDir/$SCRIPT|\$UserScripts/$SCRIPT|g" "$USER_KEYBINDS_FILE"
echo "✅ Verweis für $SCRIPT angepasst." echo "✅ Verweis für $SCRIPT angepasst."
done done
else else
echo "⚠️ Datei $USER_KEYBINDS_FILE existiert nicht. Überspringe Anpassung der Verweise." echo "⚠️ Datei $USER_KEYBINDS_FILE existiert nicht. Überspringe Anpassung der Verweise."
fi fi
# Überprüfen, ob der Ordner existiert # Überprüfen, ob der Ordner existiert
if [ -d "$(xdg-user-dir)/Pictures" ]; then if [ -d "$(xdg-user-dir)/Pictures" ]; then
echo "📂 Verschiebe $(xdg-user-dir)/Pictures nach $(xdg-user-dir PICTURES)..." echo "📂 Verschiebe $(xdg-user-dir)/Pictures nach $(xdg-user-dir PICTURES)..."
rsync -av --ignore-existing "$(xdg-user-dir)/Pictures/" "$(xdg-user-dir PICTURES)/" rsync -av --ignore-existing "$(xdg-user-dir)/Pictures/" "$(xdg-user-dir PICTURES)/"
rm -r "$(xdg-user-dir)/Pictures/" rm -r "$(xdg-user-dir)/Pictures/"
else else
echo "📂 Der Ordner $(xdg-user-dir)/Pictures existiert nicht. Kein Verschieben notwendig." 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!"