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