• =?UTF-8?Q?udev=3A_Lancer_un_script_=C3=A0_l=27insertion_d=27une_cl?= =?

    From fabrice@21:1/5 to All on Thu Oct 12 09:30:01 2023
    Bonjour


    Je cherche a lancé lors de l’insertion d’une clé USB une commande de sauvegarde rsync à l'aide udev.


    Comme premier test, j’ai créé le fichier « /etc/udev/rules.d/cat /99-usb_scan.rules » contenant :


    KERNEL=="sd*", ACTION=="add", RUN+="/bin/bash -c
    '/usr/local/bin/scanusb.sh %k'"


    rechargé udev


    |udevadm control --reload-rules|

    La commande « udevadm test /dev/sdd » affiche bien « run: '/bin/bash -c '/usr/local/bin/scanusb.sh sdd'' »


    le script scanusb.sh contient :

    #!/bin/bash

    FILE="usb_scan.log"

    echo "** Scan - USB - $1 **" > /tmp/$FILE

    date >> /tmp/$FILE

    id >> /tmp/$FILE

    sleep 30

    cat /proc/mounts | grep "sd" >> /tmp/$FILE

    sleep 3

    echo "** EOF ** " >> /tmp/$FILE


    J'ai pas de /dev/sdd dans le fichier de log.

    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é ?


    Merci pour votre aide

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Erwann Le Bras@21:1/5 to All on Thu Oct 12 11:30:01 2023
    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]


    ou qchose d'approchant

    Erwann

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Fabrice_Delvall=C3=A9e?=@21:1/5 to All on Thu Oct 12 14:40:02 2023
    On 12/10/2023 11:38, Sébastien NOBILI wrote:
    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


    J'ai tenté un sleep 60, la clé se monte automatiquement quand le script
    ce termine.

    J'ai tenté de mettre le processus en arriere plan avec un &
    (KERNEL=="sd*", ACTION=="add", RUN+="/bin/bash -c
    '/usr/local/bin/scanusb.sh %k &')

    La clé se monte presque instantanément, le script est "tué"????

    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é :)

    Fabrice

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