first commit
This commit is contained in:
135
killguest.sh
Normal file
135
killguest.sh
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
ID="$1"
|
||||||
|
|
||||||
|
if [ -z "$ID" ]; then
|
||||||
|
echo "❌ Usage: killguest <vmid|ctid>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "──────────────────────────────────────────────────────────"
|
||||||
|
echo "🔍 Virtuelle Maschine oder Container wird gesucht..."
|
||||||
|
echo "──────────────────────────────────────────────────────────"
|
||||||
|
|
||||||
|
# Typ bestimmen
|
||||||
|
if qm status "$ID" &>/dev/null; then
|
||||||
|
TYPE="vm"
|
||||||
|
elif pct status "$ID" &>/dev/null; then
|
||||||
|
TYPE="ct"
|
||||||
|
else
|
||||||
|
echo "❌ Keine VM oder LXC mit ID $ID gefunden."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Name ermitteln
|
||||||
|
if [ "$TYPE" = "vm" ]; then
|
||||||
|
NAME=$(qm config "$ID" | grep "^name:" | awk '{print $2}')
|
||||||
|
elif [ "$TYPE" = "ct" ]; then
|
||||||
|
NAME=$(pct config "$ID" | grep "^hostname:" | awk '{print $2}')
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -z "$NAME" ] && NAME="unknown"
|
||||||
|
|
||||||
|
# Ausgabe
|
||||||
|
if [ "$TYPE" = "vm" ]; then
|
||||||
|
TYPE_LABEL="VM"
|
||||||
|
else
|
||||||
|
TYPE_LABEL="LXC"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "📦 Maschine gefunden:"
|
||||||
|
echo "♻️ Name: $NAME"
|
||||||
|
echo "⚙️ Typ: $TYPE_LABEL"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# VM
|
||||||
|
########################################
|
||||||
|
if [ "$TYPE" = "vm" ]; then
|
||||||
|
|
||||||
|
PID=$(ps -eo pid,cmd | grep -E "/usr/bin/kvm.*-id $ID" | grep -v grep | awk '{print $1}')
|
||||||
|
|
||||||
|
if [ -z "$PID" ]; then
|
||||||
|
echo "❌ Kein QEMU Prozess gefunden. VM kann nicht beendet werden."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "📋 Gefundener Prozess:"
|
||||||
|
ps -fp $PID
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "──────────────────────────────────────────────────────────"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
read -p "💣 VM hart beenden? (y/N): " CONFIRM
|
||||||
|
[[ "$CONFIRM" =~ ^[Yy]$ ]] || exit 0
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "──────────────────────────────────────────────────────────"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "🔥 Beende VM (PID $PID)..."
|
||||||
|
kill -9 $PID
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
if ps -p $PID > /dev/null 2>&1; then
|
||||||
|
echo "❌ Prozess lebt noch."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "✅ VM wurde beendet."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "──────────────────────────────────────────────────────────"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# LXC
|
||||||
|
########################################
|
||||||
|
if [ "$TYPE" = "ct" ]; then
|
||||||
|
|
||||||
|
# cgroup Methode
|
||||||
|
PIDS=$(grep -l "lxc/$ID" /proc/*/cgroup 2>/dev/null | cut -d'/' -f3)
|
||||||
|
|
||||||
|
# fallback für andere layouts
|
||||||
|
if [ -z "$PIDS" ]; then
|
||||||
|
PIDS=$(ps -eo pid,cmd | grep "lxc-start.*$ID" | grep -v grep | awk '{print $1}')
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$PIDS" ]; then
|
||||||
|
echo "❌ Keine Prozesse gefunden. Container kann nicht beendet werden."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo "📋 Gefundene Prozesse:"
|
||||||
|
for PID in $PIDS; do
|
||||||
|
ps -fp $PID 2>/dev/null
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "──────────────────────────────────────────────────────────"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
read -p "💣 Container hart beenden? (y/N): " CONFIRM
|
||||||
|
[[ "$CONFIRM" =~ ^[Yy]$ ]] || exit 0
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "──────────────────────────────────────────────────────────"
|
||||||
|
echo ""
|
||||||
|
echo "🔥 Beende Container $ID..."
|
||||||
|
|
||||||
|
for PID in $PIDS; do
|
||||||
|
kill -9 $PID 2>/dev/null
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "✅ Container Prozesse beendet."
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "──────────────────────────────────────────────────────────"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user