|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +# createlinks.sh |
| 4 | +# - Prüft und erzeugt fehlende links zu den Ordnern "sbin" und "vdr.d" |
| 5 | +# - Dateirechte setzen |
| 6 | +# - Aktiviert vdr_init.sh via Service-DropIn |
| 7 | +# - Prüft symlinks zu sendmail |
| 8 | +# - Prüft und korrigiert ob eigen Skripte überschrieben wuden (/usr/lib/vdr) |
| 9 | + |
| 10 | +#VERSION=231017 |
| 11 | + |
| 12 | +CONFIG_DIR='/_config' # Hauptordner |
| 13 | +LOCAL_DIR="${CONFIG_DIR}/local" # Ordner mit den zu verlinkenden Ordnern |
| 14 | +declare -A LINK_DIRS |
| 15 | +LINK_DIRS[sbin]='/usr/local/sbin' # sbin lag mal hier: /usr/local/sbin |
| 16 | +#LINK_DIRS[_div]='/usr/local/src/_div' # _div lag mal hier: /usr/local/src/_div |
| 17 | +LINK_DIRS[vdr.d]='/etc/vdr.d' # vdr.d lag mal hier: /etc/vdr.d |
| 18 | +YAVDR_VDR='/usr/local/src/yaVDR_vdr.git' # VDR Repository mit Skripten |
| 19 | + |
| 20 | +[[ "$EUID" -ne 0 ]] && { echo 'Skript benötigt root-Rechte!' ; exit 1 ;} |
| 21 | + |
| 22 | +cd "$LOCAL_DIR" || exit 1 |
| 23 | + |
| 24 | +# Symlinks erstellen |
| 25 | +echo '==> Überprüfe Symlinks…' |
| 26 | +for dir in "${!LINK_DIRS[@]}" ; do # sbin vdr.d |
| 27 | + # Leeren Ordner löschen |
| 28 | + if [[ -d "${LINK_DIRS[$dir]}" && ! "$(ls -A ${LINK_DIRS[$dir]})" ]] ; then |
| 29 | + echo "Enferne leeren Ordner ${LINK_DIRS[$dir]}…" |
| 30 | + rm "${LINK_DIRS[$dir]}" |
| 31 | + fi |
| 32 | + if [[ ! -L "${LINK_DIRS[$dir]}" ]] ; then # Kein Symlink |
| 33 | + if [[ -d "${LINK_DIRS[$dir]}" ]] ; then # Ordner bereits vorhanden |
| 34 | + ls "${LINK_DIRS[$dir]}" |
| 35 | + echo "Warnung: Verzeichnis ${LINK_DIRS[$dir]} existiert. Bitte überprüfen!" |
| 36 | + else |
| 37 | + echo "Erstelle fehlenden Symlink nach ${LINK_DIRS[$dir]}" |
| 38 | + ln --symbolic "${LOCAL_DIR}/${dir}" "${LINK_DIRS[$dir]}" |
| 39 | + fi |
| 40 | + else |
| 41 | + echo "Symlink ${LINK_DIRS[$dir]} vorhanden. OK!" |
| 42 | + fi |
| 43 | +done |
| 44 | + |
| 45 | +# Rechte setzen (Alle Dateien in den Ordner und Unterordnern) |
| 46 | +echo '==> Setze berechtigungen…' |
| 47 | +chown --recursive vdr:vdr "$CONFIG_DIR" # Eigentümer auf 'vdr' setzen |
| 48 | +chmod --recursive 755 "$CONFIG_DIR" # Rechte auf 755 |
| 49 | + |
| 50 | +# Aktivieren von vdr_init.sh |
| 51 | +if [[ ! -e '/etc/systemd/system/vdr.service.d/pre-start.conf' ]] ; then |
| 52 | + echo '==> Erstelle /etc/systemd/system/vdr.service.d/pre-start.conf' |
| 53 | + mkdir --parents /etc/systemd/system/vdr.service.d |
| 54 | + { echo '[Service]' |
| 55 | + echo 'ExecStartPre=/etc/vdr.d/scripts/vdr_init.sh' |
| 56 | + } > /etc/systemd/system/vdr.service.d/pre-start.conf |
| 57 | + systemctl daemon-reload # Units neu einlesen |
| 58 | +fi |
| 59 | + |
| 60 | +# Symlink für sendmail prüfen und anlegen, falls nicht gefunden |
| 61 | +echo '==> Prüfe Links zu sendmail…' |
| 62 | +if [[ ! -L /usr/sbin/sendmail || ! -L /usr/bin/sendmail ]] ; then # Kein Symlink |
| 63 | + [[ -e /usr/sbin/sendmail ]] && echo '[!] "sendmail" ist kein Symlink aber existiert!' |
| 64 | + ls -l /usr/bin/sendmail |
| 65 | + ls -l /usr/sbin/sendmail |
| 66 | + #ln --symbolic "$SELF" /usr/sbin/sendmail |
| 67 | +fi |
| 68 | + |
| 69 | +# Skripte von VDR die überschreiben wurden wieder herstellen |
| 70 | +echo '==> Aktualisiere eigenes yaVDR GIT auf angepasste Skripte…' |
| 71 | +if [[ -d "${YAVDR_VDR}/.git" ]] ; then |
| 72 | + cd "$YAVDR_VDR" |
| 73 | + git pull >/dev/null # GIT aktualisieren |
| 74 | + files=('merge-commands.sh' 'vdr-recordingaction' 'vdr-shutdown') |
| 75 | + for file in "${files[@]}" ; do |
| 76 | + src="${YAVDR_VDR}/debian/${file}" # Quelle: Lokales git |
| 77 | + dest="/usr/lib/vdr/${file}" # Ziel: /urs/lib/vdr |
| 78 | + if ! cmp --quiet "$src" "$dest" ; then |
| 79 | + echo -e "==> Datei $file ist nicht identisch mit ${src}!\n==> Kopiere eigene Version…" |
| 80 | + mv --force --verbose "$dest" "${dest}.bak" |
| 81 | + cp --force --verbose "$src" "$dest" || echo "Fehler beim kopieren von $src" |
| 82 | + fi |
| 83 | + done |
| 84 | +fi |
| 85 | + |
| 86 | +exit |
0 commit comments