189 lines
6.4 KiB
Bash
189 lines
6.4 KiB
Bash
#!/bin/bash
|
|
|
|
# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo "Bitte führen Sie das Skript mit Root-Rechten aus."
|
|
exit 1
|
|
fi
|
|
|
|
apt update && apt upgrade -y
|
|
apt install -y git sudo
|
|
|
|
echo "Passe Grub-Konfig an."
|
|
|
|
# Backup der aktuellen GRUB-Konfiguration
|
|
GRUB_CONFIG="/etc/default/grub"
|
|
BACKUP_CONFIG="/etc/default/grub.bak"
|
|
|
|
if [ -f "$GRUB_CONFIG" ]; then
|
|
echo "Erstelle ein Backup der aktuellen GRUB-Konfiguration unter $BACKUP_CONFIG"
|
|
cp "$GRUB_CONFIG" "$BACKUP_CONFIG"
|
|
|
|
# GRUB-Konfiguration anpassen
|
|
echo "Passe die GRUB-Konfiguration an, um den GRUB-Loader immer anzuzeigen..."
|
|
sed -i 's/^GRUB_TIMEOUT_STYLE=.*/GRUB_TIMEOUT_STYLE=menu/' "$GRUB_CONFIG"
|
|
sed -i 's/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=5/' "$GRUB_CONFIG"
|
|
|
|
# GRUB-Konfiguration aktualisieren
|
|
echo "Aktualisiere die GRUB-Konfiguration..."
|
|
update-grub
|
|
|
|
echo "Die GRUB-Konfiguration wurde erfolgreich angepasst."
|
|
else
|
|
echo "Die Datei $GRUB_CONFIG wurde nicht gefunden. Passe GRUB-Config nicht an."
|
|
fi
|
|
|
|
# Der Code, der eingefügt werden soll
|
|
CONFIG_BLOCK='if groups | grep -q "\bsudo\b"; then
|
|
case ":$PATH:" in
|
|
*":/sbin:"*) ;;
|
|
*) export PATH="$PATH:/sbin" ;;
|
|
esac
|
|
case ":$PATH:" in
|
|
*":/usr/sbin:"*) ;;
|
|
*) export PATH="$PATH:/usr/sbin" ;;
|
|
esac
|
|
fi'
|
|
|
|
# Saubere Lösung über /etc/profile.d/
|
|
echo "$CONFIG_BLOCK" >/etc/profile.d/custom_path.sh
|
|
|
|
# Sudo-Hinweis für bash.bashrc
|
|
SUDO_HINT_BLOCK='# sudo hint
|
|
if [ ! -e "$HOME/.sudo_as_admin_successful" ] && [ ! -e "$HOME/.hushlogin" ] ; then
|
|
case " $(groups) " in *\ admin\ *|*\ sudo\ *)
|
|
if [ -x /usr/bin/sudo ]; then
|
|
cat <<-EOF
|
|
To run a command as administrator (user "root"), use "sudo <command>".
|
|
See "man sudo_root" for details.
|
|
EOF
|
|
fi
|
|
esac
|
|
fi'
|
|
|
|
# Prüfen, ob der sudo-Hinweis bereits existiert
|
|
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
|
|
|
|
XDG_BLOCK='# /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_DATA_DIRS="/usr/local/share/:/usr/share/"
|
|
|
|
if [ -n "$DESKTOP_SESSION" ]; then
|
|
# readd default if was empty
|
|
if [ -z "$XDG_CONFIG_DIRS" ]; then
|
|
XDG_CONFIG_DIRS="$DEFAULT_XDG_CONFIG_DIRS"
|
|
fi
|
|
if [ -n "${XDG_CONFIG_DIRS##*$DEFAULT_XDG_CONFIG_DIRS/xdg-$DESKTOP_SESSION*}" ]; then
|
|
XDG_CONFIG_DIRS="$DEFAULT_XDG_CONFIG_DIRS"/xdg-"$DESKTOP_SESSION":"$XDG_CONFIG_DIRS"
|
|
fi
|
|
export XDG_CONFIG_DIRS
|
|
# gnome is already added if gnome-session installed
|
|
if [ "$DESKTOP_SESSION" != "gnome" ]; then
|
|
if [ -z "$XDG_DATA_DIRS" ]; then
|
|
XDG_DATA_DIRS="$DEFAULT_XDG_DATA_DIRS"
|
|
fi
|
|
if [ -n "${XDG_DATA_DIRS##*/usr/share/$DESKTOP_SESSION*}" ]; then
|
|
XDG_DATA_DIRS=/usr/share/"$DESKTOP_SESSION":"$XDG_DATA_DIRS"
|
|
fi
|
|
export XDG_DATA_DIRS
|
|
fi
|
|
fi
|
|
'
|
|
|
|
echo "$XDG_BLOCK" >/etc/profile.d/xdg_dirs_desktop_session.sh
|
|
|
|
echo "Passwort für sudo-Nutzer setzen..."
|
|
passwd root
|
|
|
|
apt remove -y tuxedoos-desktop "*plasma*" "*libreoffice*" "*x11*" "*wayland*" sddm
|
|
apt autoremove -y
|
|
|
|
# Utils
|
|
apt install -y 7zip unrar unzip network-manager software-properties-common tree bluetooth tuxedo-neofetch tuxedo-ufw-profiles ubuntu-drivers-common apt-file kerneloops language-pack-gnome-de ffmpeg
|
|
# Internet
|
|
apt install -y network-manager network-manager-openconnect network-manager-openvpn network-manager-pptp network-manager-vpnc
|
|
# Bluetooth
|
|
apt install -y bluedevil bluez bluez-cups avahi-utils dnsmasq-base
|
|
# Passwortspeicherung für Netzwerke
|
|
apt install -y gnome-keyring libsecret-1-0 libpam-gnome-keyring signon-plugin-password pinentry-gnome3
|
|
# Tastatur
|
|
apt install -y ibus-data libibus-1.0-5 maliit-keyboard
|
|
# Drucker/Scanner
|
|
apt install -y cups sane-utils printer-driver-*
|
|
# Sound
|
|
apt install -y pipewire pipewire-bin pipewire-pulse
|
|
|
|
# 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
|
|
|
|
echo "Fertig! Das System wird neugestartet."
|
|
|
|
reboot
|