1 votes

Exécution du script avec un périphérique USB

Je veux copier un répertoire et son contenu sur mon disque dur externe USB lorsque je le connecte automatiquement à mon ordinateur portable.

J'ai donc créé un fichier appelé 00-usb-backup.rules en /etc/udev/rules.d avec ce contenu :

ACTION=="add", ATTRS{idVendor}=="0480", ATTRS{idProduct}=="a208", RUN+="/home/fabio/bin/backup"

El backup script a la permission de s'exécuter comme un programme. Et son contenu est :

#! /bin/bash
cp -r /home/fabio/Ads/ /media/fabio/BACKUP/teste/

Suite à la réponse sur un autre fil, j'ai édité visudo et ajouté ce qui suit sur la dernière ligne :

fabio ALL=(ALL) NOPASSWD: /home/fabio/bin/backup

Mais lorsque je connecte le disque dur USB, rien ne se passe :(

Avez-vous une idée de ce qui pourrait clocher ?

Merci !

1voto

bac0n Points 4841

Exécuter script lorsque le lecteur usb est branché.

RUN{type} :
Cette option ne peut être utilisée que pour des tâches d'avant-plan de très courte durée. L'exécution d'un processus d'événement pendant une longue période de temps peut bloquer tous les autres événements pour ce périphérique ou un périphérique dépendant. Démarrer des démons ou d'autres processus à long terme n'est pas approprié pour udev ; les processus bifurqués, détachés ou non, seront inconditionnellement tués après la fin de la gestion des événements. Notez que l'exécution de programmes qui accèdent au réseau ou qui montent/démontent des systèmes de fichiers n'est pas autorisée dans les règles udev, en raison de la sandbox par défaut qui est appliquée à systemd-udevd.service.

/etc/udev/rules.d/90-usb-backup.rules :

ACTION=="add", SUBSYSTEM=="block", \
ATTRS{idVendor}=="0480", ATTRS{idProduct}=="a208", \
ENV{DEVTYPE}=="partition", RUN+="/bin/sh -c '/home/fabio/bin/backup.sh'"

/home/fabio/bin/backup.sh :
(assurez-vous que votre script a le bit d'exécution activé ; chmod +x script)

#!bin/bash

if [[ -b $DEVNAME ]] && \
   mount $DEVNAME /home/fabio/Ads/
then
   cp -a /home/fabio/Ads/ /media/fabio/BACKUP/teste/
fi

cela ne montera pas le disque sur le système, mais seulement à l'intérieur de l'ordinateur. bac à sable .

0voto

Loren Riccie Points 1

Voici ce que je fais : un service systemd (par exemple borgmatic.service) est déclenché par une règle udev basée sur l'événement hot plug.

SUBSYSTEM=="block", ACTION=="add", ENV{DEVTYPE}== "partition", TAG+="systemd", ENV{SYSTEMD_USER_WANTS}="borgmatic.service"

Pour le service dans mon dossier ~/.config/systemd/user

[Unité] Description=sauvegarde à domicile

[Service]

Type=unshot

ExecStart=/home/xxx/.local/bin/borgmatic

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X