105 lines
3.0 KiB
Bash
105 lines
3.0 KiB
Bash
#!/bin/bash
|
|
###############################################
|
|
# stream-recorder - Installations-Script
|
|
# Richtet den systemd-Timer für die
|
|
# automatische Zeitplanung ein.
|
|
###############################################
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
SERVICE_NAME="stream-recorder"
|
|
|
|
echo ""
|
|
echo "stream-recorder - Installation"
|
|
echo "=============================="
|
|
echo ""
|
|
|
|
# Root-Prüfung
|
|
if [[ $EUID -ne 0 ]]; then
|
|
echo "FEHLER: Dieses Script muss als root ausgeführt werden."
|
|
echo " sudo $0"
|
|
exit 1
|
|
fi
|
|
|
|
# Prüfe ob systemd vorhanden
|
|
if ! command -v systemctl &>/dev/null; then
|
|
echo "FEHLER: systemd ist nicht verfügbar."
|
|
echo " Dieses Script benötigt systemd für die Zeitplanung."
|
|
exit 1
|
|
fi
|
|
|
|
# Prüfe Abhängigkeiten
|
|
if ! command -v ffmpeg &>/dev/null; then
|
|
echo "ffmpeg nicht gefunden. Installiere ffmpeg..."
|
|
apt-get update -qq && apt-get install -y -qq ffmpeg
|
|
echo "ffmpeg installiert."
|
|
fi
|
|
|
|
# Hauptscript ausführbar machen
|
|
chmod +x "${SCRIPT_DIR}/stream-recorder.sh"
|
|
|
|
# Konfiguration aus Vorlage erstellen, falls nicht vorhanden
|
|
if [[ ! -f "${SCRIPT_DIR}/config/stream-recorder.conf" ]]; then
|
|
if [[ -f "${SCRIPT_DIR}/config/stream-recorder.conf.dist" ]]; then
|
|
cp "${SCRIPT_DIR}/config/stream-recorder.conf.dist" "${SCRIPT_DIR}/config/stream-recorder.conf"
|
|
echo "Konfiguration erstellt: config/stream-recorder.conf"
|
|
echo " Bitte anpassen: nano ${SCRIPT_DIR}/config/stream-recorder.conf"
|
|
echo ""
|
|
fi
|
|
fi
|
|
|
|
echo "Installationspfad: ${SCRIPT_DIR}"
|
|
echo ""
|
|
|
|
# systemd Service erstellen
|
|
cat > "/etc/systemd/system/${SERVICE_NAME}.service" <<EOF
|
|
[Unit]
|
|
Description=stream-recorder Scheduler
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
ExecStart=${SCRIPT_DIR}/stream-recorder.sh scheduler
|
|
KillMode=none
|
|
StandardOutput=journal
|
|
StandardError=journal
|
|
EOF
|
|
|
|
# systemd Timer erstellen
|
|
cat > "/etc/systemd/system/${SERVICE_NAME}.timer" <<EOF
|
|
[Unit]
|
|
Description=stream-recorder Scheduler Timer
|
|
|
|
[Timer]
|
|
OnBootSec=30
|
|
OnCalendar=*-*-* *:*:00
|
|
AccuracySec=10
|
|
|
|
[Install]
|
|
WantedBy=timers.target
|
|
EOF
|
|
|
|
# systemd neu laden und Timer aktivieren
|
|
systemctl daemon-reload
|
|
systemctl enable "${SERVICE_NAME}.timer"
|
|
systemctl start "${SERVICE_NAME}.timer"
|
|
|
|
echo "Installation abgeschlossen!"
|
|
echo ""
|
|
echo "Status:"
|
|
systemctl status "${SERVICE_NAME}.timer" --no-pager 2>/dev/null || true
|
|
echo ""
|
|
echo "Der Scheduler prüft jetzt jede Minute die Job-Dateien"
|
|
echo "und startet/stoppt Aufnahmen automatisch."
|
|
echo ""
|
|
echo "Nächste Schritte:"
|
|
echo " 1. Konfiguration anpassen: nano ${SCRIPT_DIR}/config/stream-recorder.conf"
|
|
echo " 2. Job-Datei erstellen: cp jobs/templates/example-rtmp.job.dist jobs/mein-stream.job"
|
|
echo " 3. Job-Datei bearbeiten: nano jobs/mein-stream.job"
|
|
echo " 4. SCHEDULE_ENABLED=true setzen und Zeiten konfigurieren"
|
|
echo " 5. Jobs prüfen: ./stream-recorder.sh list"
|
|
echo ""
|
|
echo "Deinstallation: sudo install/uninstall.sh"
|