• =?UTF-8?Q?Re=3A_udev=3A_Lancer_un_script_=C3=A0_l=27insertion_d?= =?UTF

    From =?UTF-8?Q?S=C3=A9bastien_NOBILI?=@21:1/5 to All on Thu Oct 12 10:00:01 2023
    Bonjour,

    Le 2023-10-12 09:06, fabrice a écrit :
    Le montage automatique de la clé s’effectue après l’exécution de la règle udev, même si je tente une commande mount dans le script,
    /dev/sdd n’est pas encore disponible.


    Comment faire pour lancer la règle udev âpres que la cle soit monté ?

    udev intervient avant. Tu ne pourras pas.

    Mais tu peux très bien demander à udev de lancer un script qui va monter
    la clé et
    lancer ton rsync. C'est ce que je fais (lancement auto de sauvegarde à l'insertion
    d'un disque).

    Attention : si la commande est trop longue (et ce sera probablement le
    cas avec
    ton rsync), alors elle se fait tuer. Pour contourner ça j'ai créé un
    service Systemd
    et udev déclenche le lancement du service. Côté udev ça prend une
    fraction de seconde
    et ma sauvegarde peut prendre plusieurs dizaines de minutes.

    Enfin, plutôt que de te baser sur `/dev/sdd` qui est susceptible de
    changer, je te
    conseille de référencer ton disque par son UUID (via
    `/dev/disk/by-uuid/`).

    Sébastien

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?S=C3=A9bastien_NOBILI?=@21:1/5 to All on Thu Oct 12 12:00:01 2023
    Le 2023-10-12 11:06, Erwann Le Bras a écrit :
    Le 12/10/2023 à 09:06, fabrice a écrit :


    Le montage automatique de la clé s’effectue après l’exécution de la >> règle udev, même si je tente une commande mount dans le script,
    /dev/sdd n’est pas encore disponible.



    Une simple boucle d'attente?

    do

        sleep 5

    while ! [ -d /dev/sdd]

    Ma réponse précédente n'abordait pas ce point… je précise donc.

    Ce n'est pas nécessaire. Ma règle udev est décrite comme ça :

    ```
    KERNEL=="sd?2", ACTION=="add", ATTRS{vendor}=="...",
    ATTRS{model}=="...", RUN+="/bin/systemctl --no-block start
    backup.service"
    ```

    C'est quand un `/dev/sd*2` est créé et qu'il correspond au vendor/model
    de
    mon disque que la sauvegarde est lancée.

    Sébastien

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?S=C3=A9bastien_NOBILI?=@21:1/5 to All on Thu Oct 12 15:10:01 2023
    Le 2023-10-12 14:20, Fabrice Delvallée a écrit :
    J'ai pas encore testé le service. Je suis novice en systemd
    et je ne sais pas non plus demandé a udev de monter la clé :)

    Voilà le contenu du fichier `/etc/systemd/system/backup.service`

    ```
    [Unit]
    Description=Backup

    [Service]
    Type=oneshot
    ExecStart=/usr/local/sbin/backup.pl
    TimeoutSec=0
    GuessMainPID=false
    RemainAfterExit=no
    ```

    La commande `systemctl daemon-reload` permet à Systemd de prendre
    connaissance de ton nouveau service.

    Je t'épargne le contenu de mon `backup.pl` qui est trop spécifique
    à mon besoin pour être intéressant…

    Tu peux le remplacer par un `backup.sh` dans lequel tu feras le
    montage de ton disque et le rsync.

    Sébastien

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)