agnes-the-ai-analyst/server/bin/remove-analyst
Petr c56905d34f Initial commit: OSS data distribution platform
Open-source AI data analyst platform extracted from internal repo.
Includes data sync engine, Keboola adapter, Flask web portal,
server deployment scripts, and configuration templates.
2026-03-08 23:31:28 +01:00

73 lines
1.6 KiB
Bash
Executable file

#!/bin/bash
# Remove user (analyst or admin)
# Usage: sudo remove-analyst username [--force]
set -euo pipefail
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root (use sudo)"
exit 1
fi
# Parse arguments
FORCE=false
USERNAME=""
for arg in "$@"; do
case $arg in
--force|-f)
FORCE=true
;;
*)
USERNAME="$arg"
;;
esac
done
if [[ -z "$USERNAME" ]]; then
echo "Usage: sudo remove-analyst username [--force]"
echo " --force, -f Skip confirmation prompt"
exit 1
fi
# Check if user exists
if ! id "$USERNAME" &>/dev/null; then
echo "Error: User '$USERNAME' does not exist"
exit 1
fi
# Prevent removing yourself
CURRENT_USER=$(logname 2>/dev/null || echo "$SUDO_USER")
if [[ "$USERNAME" == "$CURRENT_USER" ]]; then
echo "Error: Cannot remove yourself"
exit 1
fi
# Get user groups for info
GROUPS=$(groups "$USERNAME" 2>/dev/null | cut -d: -f2 || echo "")
echo "Removing user: $USERNAME"
echo "Groups: $GROUPS"
if [[ "$FORCE" != true ]]; then
read -p "Are you sure? [y/N] " -n 1 -r
echo ""
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "Cancelled"
exit 0
fi
fi
# Remove user and home directory
# userdel -r may fail if home is owned by someone else; fall back to manual cleanup
if userdel -r "$USERNAME" 2>/dev/null; then
: # success
else
userdel "$USERNAME"
if [[ -d "/home/$USERNAME" ]]; then
rm -rf "/home/$USERNAME"
echo "Home directory removed manually"
fi
fi
echo "User '$USERNAME' removed successfully"