touch /home/scripts/multipleUsersDelete.sh
chmod +x /home/scripts/multipleUsersDelete.sh
nano /home/scripts/multipleUsersDelete.sh
#!/bin/bash
# skasuj_klase.sh - uruchamiaj na Proxmoxie

LXC_NAME="100"
BASE_PATH="/home/LO"
DATASET="rpool/LO"

clear
echo "Podaj ID klasy do skasowania (np. a26, b25):"
read -r id

if [ -z "$id" ] || [ ${#id} -lt 2 ]; then
    echo "Błąd: ID klasy musi mieć co najmniej 2 znaki dla bezpieczeństwa!"
    exit 1
fi

# Pobieramy listę kont z kontenera
echo "Wyszukiwanie kont pasujących do: $id..."
pct exec "$LXC_NAME" -- samba-tool user list | grep "^$id" > kasowane.txt

if [ ! -s kasowane.txt ]; then
    echo "Nie znaleziono kont zaczynających się od: $id"
    rm -f kasowane.txt
    exit 0
fi

echo "Znaleziono $(wc -l < kasowane.txt) kont. Oto one:"
cat kasowane.txt
echo "----------------------------------------"
echo -n "Czy na pewno CHCESZ SKASOWAĆ te konta, ich PLIKI i QUOTY? (tak/NIE): "
read -r potwierdzenie

if [ "$potwierdzenie" != "tak" ]; then
    echo "Anulowano."
    rm -f kasowane.txt
    exit 0
fi

while read -r konto || [ -n "$konto" ]; do
    konto=$(echo "$konto" | tr -d '\r' | xargs)
    [ -z "$konto" ] && continue

    echo "--- Przetwarzanie: $konto ---"

    # 1. Pobranie UID przed skasowaniem konta (potrzebne do wyczyszczenia Quoty)
    u_uid=$(pct exec "$LXC_NAME" -- id -u "$konto" 2>/dev/null | tr -d '\r')

    # 2. Kasowanie z bazy Samba AD
    echo "[1/3] Usuwanie z bazy Samba AD..."
    pct exec "$LXC_NAME" -- samba-tool user delete "$konto"

    # 3. Kasowanie plików fizycznych na ZFS (na Proxmoxie)
    if [ -d "$BASE_PATH/$konto" ]; then
        echo "[2/3] Usuwanie katalogu: $BASE_PATH/$konto"
        rm -rf "$BASE_PATH/$konto"
    fi

    # 4. Usuwanie limitu Quota ZFS
    if [ -n "$u_uid" ]; then
        echo "[3/3] Czyszczenie limitu Quota ZFS dla UID: $u_uid"
        zfs set userquota@$u_uid=none "$DATASET"
    fi

done < kasowane.txt

echo "----------------------------------------"
echo "Operacja zakończona sukcesem."
rm -f kasowane.txt

 

Spis treści: