Appel de script sur évènement système

Tout comme ricardo, nous faisons évoluer notre script de sauvegarde (ou plutôt mon joujou).
Jusqu’à présent, il se contente de sauvegarder ce qui lui est indiqué dans sa conf, là où cela lui est indiqué, quand cela lui est indiqué, et de la manière dont cela lui est indiqué (j’utilise le même script chez moi, au boulot, ou chez les clients et/ou amis. Seule la conf bouge)
Le script est soit lancé ponctuellement via crontab, soit il est en fonction continue et géré par son daemon afin d’en surveiller son état.
Ca c’était pour vous situer l’existant.

Ce que je cherche désormais à faire, c’est en quelque sorte un genre d’interrupteur qui me permet de lancer simplement le script.
je voudrais pouvoir rajouter la possibilité de le lancer lorsqu’on branche le disque concerné.
Sur la major partie des livecd, lorsqu’on branche un disque dur externe, ou une clef USB, elle est automontée
Je cherche à appliquer le même principe :

si quelqun peut m’éclairer ma lanterne sur la gestion des event système linux je suis preneur :slightly_smiling:

  • regarde du côté des règles udev (désolé pour ceux que ça choquerait d’avoir des liens vers ce dérivé)
  • sinon, il y a également inotify tools

[quote=“Totor”]- regarde du côté des règles udev (désolé pour ceux que ça choquerait d’avoir des liens vers ce dérivé)

  • sinon, il y a également inotify tools[/quote]
    Je pensais plutôt me baser sur les retour de dbus, mais c’est là que je bloque
    udev j’y ai pensé oui. Si j’ai bien compris la manière de l’utiliser, il permet d’éxécuter un script au branchement d’un périphérique. Je suppose donc que si je branche une clé USB, une imprimante, ou un lecteur de carte, mon script se lancera… et ce n’est pas le but :confused:
    Je vais tout de même regarder de son côté oui
    Cela dit si quelqun a une idée aussi, je prends :slightly_smiling:

Tu peux rajouter des règles de filtrage pour limiter les périphériques. Je crois savoir que tu peux notamment limiter ça à un UUID particulier. Comment précisément, c’est une autre question… :mrgreen:

+1

edit :
je pense qu’il faut que tu “matches” la clée ID_FS_UUID dans ta règle … quelque chose comme ENV{ID_FS_UUID}==""

Oui oui c’est exactement udev qu’il te faut: moi je l’utilise pour lancer un driver au branchement d’un périphérique usb

Il y a une API D-Bus fournie par udisks :
http://hal.freedesktop.org/docs/udisks/

Mais personellement, je plussoie l’avis général et je te recommande une règle udev (ce n’est pas à l’environnement desktop de gérer les évènements systèmes comme lancer une sauvegarde sur un branchement de disque):

http://reactivated.net/writing_udev_rules.html#external-run

Tu peux trouver des informations pour reconnaître ton périphérique avec :

j’ai regardé udev, et du coup je pensais plutôt faire une règle de la sorte :

cela vous semble correct ?

Si ton disque est partitionné, je ne pense pas qu’il ait un UUID (l’UUID se trouve sur les filesystems qui sont eux-même contenus dans les partitions). À ta place je m’appuierait plutôt sur un numéro de série ou un World Wide Name.

Auto-critique : bien sûr, ma remarque n’a de sens que si tu essaies de te baser sur l’événement “nouveau disque” et pas celui “nouvelle partition”. Donc ce que tu as écrit au dessus est cohérent. Tu peux donc parfaitement te baser sur ID_FS_LABEL ou ID_FS_UUID. Le filtrage par le nom donné par le kernel n’apporte du coup pas d’information utile.

merci bien pour ces précisions :slightly_smiling: