commit 29ac3974b70120282df408433144491c1b4c88c1 Author: henry Date: Fri Apr 25 16:46:36 2025 +0200 ADD: added hard drive mount script and nfs server script diff --git a/mountscript/mount-plus.sh b/mountscript/mount-plus.sh new file mode 100755 index 0000000..619ef22 --- /dev/null +++ b/mountscript/mount-plus.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +# Sicherstellen, dass root-Rechte vorliegen +if [[ $EUID -ne 0 ]]; then + echo "Dieses Skript muss als root ausgefΓΌhrt werden. Benutze: sudo $0" + exit 1 +fi + +clear +echo "πŸ“¦ VerfΓΌgbare Laufwerke/Partitionen:" +lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT + +echo "" +read -p "πŸ” Welche Partition mΓΆchtest du mounten (z.B. sdb1): " PARTITION +DEVICE="/dev/$PARTITION" + +if [ ! -b "$DEVICE" ]; then + echo "❌ Fehler: $DEVICE existiert nicht!" + exit 1 +fi + +# PrΓΌfen, ob Dateisystem vorhanden ist +FSTYPE=$(blkid -s TYPE -o value "$DEVICE") + +if [ -z "$FSTYPE" ]; then + echo "⚠️ Diese Partition scheint kein Dateisystem zu haben." + read -p "❓ MΓΆchtest du sie formatieren? (Dies lΓΆscht alle Daten!) [ja/nein]: " FORMAT_ANSWER + if [[ "$FORMAT_ANSWER" == "ja" ]]; then + read -p "πŸ“ Welches Dateisystem willst du verwenden (z.B. ext4): " NEWFS + echo "🚧 Formatiere $DEVICE mit $NEWFS ..." + mkfs -t "$NEWFS" "$DEVICE" + FSTYPE="$NEWFS" + else + echo "❌ Abgebrochen. Ohne Dateisystem kann nicht gemountet werden." + exit 1 + fi +else + echo "βœ… Dateisystem erkannt: $FSTYPE" +fi + +# Mountpunkt erfragen +read -p "πŸ“ Wohin soll gemountet werden? (z.B. /mnt/$PARTITION): " MOUNTPOINT + +# Verzeichnis ggf. anlegen +if [ ! -d "$MOUNTPOINT" ]; then + mkdir -p "$MOUNTPOINT" + echo "πŸ“‚ Mountpunkt $MOUNTPOINT wurde erstellt." +fi + +# Mounten +echo "πŸ”§ Versuche, $DEVICE nach $MOUNTPOINT zu mounten..." +mount "$DEVICE" "$MOUNTPOINT" +if [ $? -ne 0 ]; then + echo "❌ Fehler beim Mounten!" + exit 1 +fi +echo "βœ… Erfolgreich gemountet." + +# fstab-Eintrag anbieten +read -p "πŸ“œ Soll der Eintrag in /etc/fstab gespeichert werden (automatisches Mounten beim Boot)? [ja/nein]: " FSTAB_ANSWER +if [[ "$FSTAB_ANSWER" == "ja" ]]; then + UUID=$(blkid -s UUID -o value "$DEVICE") + echo "UUID=$UUID $MOUNTPOINT $FSTYPE defaults 0 2" >> /etc/fstab + echo "βœ… /etc/fstab wurde aktualisiert." +fi diff --git a/nfs/client.sh b/nfs/client.sh new file mode 100755 index 0000000..e5e6d1a --- /dev/null +++ b/nfs/client.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# ───── Interaktive Abfragen ───── +read -p "πŸ”Œ IP-Adresse des NFS-Servers: " SERVER_IP +read -p "πŸ“ Remote-Pfad auf dem Server (z.β€―B. /srv/nfs/share): " REMOTE_PATH +read -p "πŸ“‚ Lokaler Mountpunkt auf diesem Client (z.β€―B. /mnt/nfs_share): " LOCAL_MOUNT + +# ───── NFS-Client installieren (fΓΌr Debian/Ubuntu) ───── +echo "πŸ“¦ Installiere NFS-Client (falls nΓΆtig)..." +apt update && apt install -y nfs-common + +# ───── Lokales Verzeichnis vorbereiten ───── +if [ ! -d "$LOCAL_MOUNT" ]; then + echo "πŸ“ Erstelle lokalen Mountpunkt: $LOCAL_MOUNT" + mkdir -p "$LOCAL_MOUNT" +fi + +# ───── Mount-Versuch ───── +echo "πŸ”— Versuche, $SERVER_IP:$REMOTE_PATH nach $LOCAL_MOUNT zu mounten..." +mount -t nfs "$SERVER_IP:$REMOTE_PATH" "$LOCAL_MOUNT" + +# ───── Erfolg prΓΌfen ───── +if mountpoint -q "$LOCAL_MOUNT"; then + echo "βœ… Share erfolgreich gemountet unter $LOCAL_MOUNT" +else + echo "❌ Mountvorgang fehlgeschlagen." +fi diff --git a/nfs/nfsSlowData.sh b/nfs/nfsSlowData.sh new file mode 100755 index 0000000..174eb2e --- /dev/null +++ b/nfs/nfsSlowData.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +# ==== Standardwerte direkt im Skript definieren ==== +DEFAULT_EXPORT_PATH="/slowData" +DEFAULT_SUBNET="192.168.178.0/24" + +# ==== Übergabeparameter auswerten ==== +while [[ $# -gt 0 ]]; do + case "$1" in + --path) + EXPORT_PATH="$2" + shift 2 + ;; + --subnet) + SUBNET="$2" + shift 2 + ;; + *) + echo "❌ Unbekannter Parameter: $1" + exit 1 + ;; + esac +done + +# ==== Fallback auf Standardwerte ==== +EXPORT_PATH="${EXPORT_PATH:-$DEFAULT_EXPORT_PATH}" +SUBNET="${SUBNET:-$DEFAULT_SUBNET}" + +# ==== Interaktive Nachfrage, falls dennoch leer ==== +[[ -z "$EXPORT_PATH" ]] && read -rp "Pfad des freizugebenden Ordners: " EXPORT_PATH +[[ -z "$SUBNET" ]] && read -rp "Subnetz (z.β€―B. 192.168.178.0/24): " SUBNET + +# ==== Ordner vorbereiten ==== +sudo mkdir -p "$EXPORT_PATH" +sudo chmod 777 "$EXPORT_PATH" + +# ==== Export konfigurieren ==== +EXPORT_LINE="$EXPORT_PATH $SUBNET(rw,sync,no_subtree_check,no_root_squash)" +EXPORTS_FILE="/etc/exports" + +if ! grep -Fxq "$EXPORT_LINE" "$EXPORTS_FILE"; then + echo "$EXPORT_LINE" | sudo tee -a "$EXPORTS_FILE" + echo "βœ… Export wurde hinzugefΓΌgt." +else + echo "ℹ️ Export existiert bereits." +fi + +# ==== NFS-Dienst neu laden ==== +sudo exportfs -ra +sudo systemctl restart nfs-server + +echo "βœ… NFS-Share aktiv: $EXPORT_PATH β†’ $SUBNET (777-Rechte)" diff --git a/nfs/server.sh b/nfs/server.sh new file mode 100755 index 0000000..f936237 --- /dev/null +++ b/nfs/server.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +echo "πŸ“¦ NFS Server Setup fΓΌr globalen Share" + +# ───── Eingabe: Freizugebender Ordner ───── +read -p "πŸ“ Welcher Ordner soll fΓΌr ALLE Nutzer freigegeben werden? (z.β€―B. /srv/nfs/global): " NFS_DIR + +# ───── Verzeichnis vorbereiten ───── +if [ ! -d "$NFS_DIR" ]; then + echo "πŸ“ Erstelle Verzeichnis $NFS_DIR..." + mkdir -p "$NFS_DIR" +fi + +# ───── Zugriffsrechte setzen ───── +chown nobody:nogroup "$NFS_DIR" +chmod 777 "$NFS_DIR" # Jeder kann lesen, schreiben und ausfΓΌhren + +# ───── Lokales Subnetz erkennen ───── +LOCAL_SUBNET=$(ip route | awk '/src/ {print $1; exit}') + +# ───── /etc/exports vorbereiten ───── +EXPORT_LINE="$NFS_DIR $LOCAL_SUBNET(rw,sync,no_subtree_check,no_root_squash)" + +if ! grep -qF "$EXPORT_LINE" /etc/exports; then + echo "$EXPORT_LINE" >> /etc/exports + echo "βœ… Export hinzugefΓΌgt: $EXPORT_LINE" +else + echo "ℹ️ Export existiert bereits." +fi + +# ───── NFS-Dienste neu laden ───── +exportfs -ra +systemctl restart nfs-kernel-server + +echo "" +echo "πŸš€ NFS-Share '$NFS_DIR' ist jetzt aktiv fΓΌr Subnetz: $LOCAL_SUBNET" +echo "πŸ‘₯ Zugriff: Alle Nutzer, ohne EinschrΓ€nkung auf UID oder Gruppe"