ADD: added hard drive mount script and nfs server script
This commit is contained in:
65
mountscript/mount-plus.sh
Executable file
65
mountscript/mount-plus.sh
Executable file
@@ -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
|
||||||
27
nfs/client.sh
Executable file
27
nfs/client.sh
Executable file
@@ -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
|
||||||
52
nfs/nfsSlowData.sh
Executable file
52
nfs/nfsSlowData.sh
Executable file
@@ -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)"
|
||||||
37
nfs/server.sh
Executable file
37
nfs/server.sh
Executable file
@@ -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"
|
||||||
Reference in New Issue
Block a user