Feat: Logging mit Abfrage.

This commit is contained in:
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
# 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
# Root-Rechte prüfen
if [ "$(id -u)" -ne 0 ]; then
echo "Bitte als root ausführen!"
exit 1
fi
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
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'
# sbin in Path
read -p "❓ Soll sbin für sudo-Nutzer in den PATH aufgenommen werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
# 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.
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
cat << 'EOF' > /etc/profile.d/sbin_in_path.sh
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
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."
echo " sbin wurde zum PATH für sudo-Nutzer hinzugefügt."
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_DATA_DIRS="/usr/local/share/:/usr/share/"
@@ -70,77 +83,20 @@ if [ -n "$DESKTOP_SESSION" ]; then
export XDG_DATA_DIRS
fi
fi
'
EOF
echo "$XDG_BLOCK" >/etc/profile.d/xdg_dirs_desktop_session.sh
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."
echo " XDG-Data-Dirs wurden gesetzt!"
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!"