2025-05-15 06:59:33 +00:00

81 lines
2.2 KiB
Bash

#!/bin/bash
# === 1. Root-Rechte prüfen ===
if [ "$EUID" -ne 0 ]; then
echo "🚫 Bitte führe dieses Skript mit Root-Rechten aus (sudo ./install_fail2ban_discord.sh)"
exit 1
fi
echo "✅ Root-Rechte erkannt"
# === 2. Webhook-Link abfragen ===
read -rp "Bitte gib deinen Discord Webhook-Link ein: " DISCORD_WEBHOOK
if [[ -z "$DISCORD_WEBHOOK" ]]; then
echo "🚫 Kein Webhook angegeben. Abbruch."
exit 1
fi
# === 3. IPInfo Token abfragen ===
read -rp "Bitte gib deinen ipinfo.io Token ein (für Geo-IP-Daten): " IPINFO_TOKEN
if [[ -z "$IPINFO_TOKEN" ]]; then
echo "🚫 Kein ipinfo Token angegeben. Abbruch."
exit 1
fi
# === 4. Testnachricht an Webhook senden ===
echo "📨 Sende Testnachricht an Discord Webhook..."
curl -H "Content-Type: application/json" \
-X POST \
-d '{"content": "✅ Testnachricht: Fail2Ban Discord Alert erfolgreich eingerichtet!"}' \
"$DISCORD_WEBHOOK"
# === 5. Webhook und Token in .env schreiben ===
echo "🔧 Trage Webhook und ipinfo Token in .env-Datei ein..."
cat <<EOF > .env
DISCORD_WEBHOOK_URL=$DISCORD_WEBHOOK
IPINFO_TOKEN=$IPINFO_TOKEN
EOF
# === 6. Python virtualenv erstellen und Abhängigkeiten installieren ===
echo "🐍 Erstelle Python-Umgebung..."
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
deactivate
# === 7. Systemd Service erstellen ===
SERVICE_PATH="/etc/systemd/system/fail2ban_discord_alert.service"
echo "🛠️ Erstelle systemd service unter $SERVICE_PATH ..."
cat <<EOF > "$SERVICE_PATH"
[Unit]
Description=Fail2Ban Discord Webhook Monitor
After=network.target
[Service]
Type=simple
WorkingDirectory=$(pwd)
ExecStart=$(pwd)/venv/bin/python3 $(pwd)/fail2ban_discord.py
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# === 8. Service aktivieren und starten ===
echo "🔄 Aktiviere und starte fail2ban_discord_alert.service..."
systemctl daemon-reexec
systemctl daemon-reload
systemctl enable fail2ban_discord_alert.service
systemctl start fail2ban_discord_alert.service
# === 9. Status anzeigen ===
echo "📋 Status des Dienstes:"
systemctl status fail2ban_discord_alert.service --no-pager
echo "✅ Installation abgeschlossen."