fix: dual-mode installer — works with or without sudo
Installer now detects at runtime if it can get root access: - Root/NOPASSWD sudo: installs to system directories with systemd - No root: installs to ~/.local/bin with @reboot cron job Self-elevation uses 'script -qc sudo bash' for requiretty, or falls back to user mode without hanging on password prompts. Uninstaller checks both system and user paths.
This commit is contained in:
@@ -1,29 +1,35 @@
|
||||
#!/bin/bash
|
||||
# ServerManager Agent Uninstaller
|
||||
|
||||
# Self-elevate if not running as root
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
if command -v script >/dev/null 2>&1; then
|
||||
exec script -q -c "sudo bash '$0'" /dev/null
|
||||
fi
|
||||
exec sudo bash "$0"
|
||||
# Try system paths first, fall back to user paths
|
||||
if [ -f /usr/local/bin/servermanager-agent ]; then
|
||||
echo "[1/3] Stopping and disabling service..."
|
||||
systemctl stop servermanager-agent 2>/dev/null || true
|
||||
systemctl disable servermanager-agent 2>/dev/null || true
|
||||
systemctl daemon-reload 2>/dev/null || true
|
||||
|
||||
echo "[2/3] Removing system files..."
|
||||
rm -f /usr/local/bin/servermanager-agent 2>/dev/null || true
|
||||
rm -rf /etc/servermanager 2>/dev/null || true
|
||||
rm -f /etc/systemd/system/servermanager-agent.service 2>/dev/null || true
|
||||
|
||||
echo "[3/3] Reloading systemd..."
|
||||
systemctl daemon-reload 2>/dev/null || true
|
||||
elif [ -f "$HOME/.local/bin/servermanager-agent" ]; then
|
||||
echo "[1/2] Removing cron job..."
|
||||
crontab -l 2>/dev/null | grep -v 'servermanager-agent' | crontab - 2>/dev/null || true
|
||||
|
||||
echo "[2/2] Removing user files..."
|
||||
rm -f "$HOME/.local/bin/servermanager-agent" 2>/dev/null || true
|
||||
rm -rf "$HOME/.config/servermanager" 2>/dev/null || true
|
||||
else
|
||||
echo "Agent is not installed."
|
||||
# Still try to clean up any leftover system files
|
||||
rm -f /usr/local/bin/servermanager-agent 2>/dev/null || true
|
||||
rm -rf /etc/servermanager 2>/dev/null || true
|
||||
rm -f /etc/systemd/system/servermanager-agent.service 2>/dev/null || true
|
||||
systemctl daemon-reload 2>/dev/null || true
|
||||
crontab -l 2>/dev/null | grep -v 'servermanager-agent' | crontab - 2>/dev/null || true
|
||||
fi
|
||||
|
||||
AGENT_BIN="/usr/local/bin/servermanager-agent"
|
||||
CONFIG_DIR="/etc/servermanager"
|
||||
SERVICE_FILE="/etc/systemd/system/servermanager-agent.service"
|
||||
|
||||
echo "[1/3] Stopping and disabling service..."
|
||||
systemctl stop servermanager-agent 2>/dev/null || true
|
||||
systemctl disable servermanager-agent 2>/dev/null || true
|
||||
systemctl daemon-reload 2>/dev/null || true
|
||||
|
||||
echo "[2/3] Removing files..."
|
||||
rm -f "$AGENT_BIN" 2>/dev/null || true
|
||||
rm -rf "$CONFIG_DIR" 2>/dev/null || true
|
||||
rm -f "$SERVICE_FILE" 2>/dev/null || true
|
||||
|
||||
echo "[3/3] Reloading systemd..."
|
||||
systemctl daemon-reload 2>/dev/null || true
|
||||
|
||||
echo "ServerManager Agent uninstalled successfully."
|
||||
|
||||
Reference in New Issue
Block a user