#!/bin/sh # Garde du releve des cellules sur le Synology .17 (ARCHIVE3). A LANCER EN ROOT, # toutes les 5 minutes (timer systemd evcs-releve-port.timer, voir README). # # Pourquoi (25/09/2026) : debrancher puis rebrancher le cable FTDI recree # /dev/ttyUSB0 en crw------- root. Le conteneur, qui tourne en uid 1026, ne # peut plus l'ouvrir : il meurt (« EIO: i/o error ») et ne repart pas seul. # charger-pilotes.sh ne tourne qu'au demarrage du NAS, donc sans cette garde # chaque debranchement coupait le releve jusqu'a une intervention manuelle. # # Ce script ne fait RIEN quand tout va bien, et n'ecrit une ligne dans le # journal systeme (tag evcs-releve) que lorsqu'il agit. Idempotent. PORT=/dev/ttyUSB0 CONTENEUR=evcs-releve-cellules DOCKER=/usr/local/bin/docker DIR=$(dirname "$0") dire() { logger -t evcs-releve "$*"; echo "$*"; } # Pilotes decharges (ne devrait arriver qu'apres une MAJ DSM) : on les recharge. if ! /sbin/lsmod | grep -q "^ftdi_sio "; then dire "ftdi_sio absent : rechargement des pilotes" /bin/sh "$DIR/charger-pilotes.sh" >/dev/null 2>&1 fi # Cable debranche : rien a faire, le conteneur ne peut de toute facon pas # demarrer sans son device. On attend le rebranchement. [ -e "$PORT" ] || exit 0 # Droits perdus au rebranchement : on les rouvre. if [ "$(stat -c %a "$PORT")" != "666" ]; then chmod 666 "$PORT" dire "droits de $PORT rouverts (cable rebranche ?)" fi # Conteneur arrete : on le relance. etat=$("$DOCKER" inspect -f '{{.State.Running}}' "$CONTENEUR" 2>/dev/null) if [ "$etat" != "true" ]; then "$DOCKER" start "$CONTENEUR" >/dev/null 2>&1 \ && dire "$CONTENEUR relance" \ || dire "$CONTENEUR : echec de la relance" fi