# Appel de script sur évènement système

**URL:** <https://www.debian-fr.org/t/appel-de-script-sur-evenement-systeme/34635>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 3:45 UTC](https://www.debian-fr.org/t/appel-de-script-sur-evenement-systeme/34635 "2016-02-21T03:45:03Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mitsu](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/f475e1/32.png) [@Mitsu](https://www.debian-fr.org/u/Mitsu)\
**Post date:** [Février 21, 2016, 3:45 UTC](https://www.debian-fr.org/t/appel-de-script-sur-evenement-systeme/34635/1 "2016-02-21T03:45:03Z")

</div>

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 :

> [@](#):
>
> Au branchement du disque dont l’uuid est ‹&nbsp;aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee&nbsp;›, lancer le script backup\_mania avec les droits root

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

---

<div class="post-metadata">

**Author:** ![Totor](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/58f4c7/32.png) [@Totor](https://www.debian-fr.org/u/Totor)\
**Post date:** [Février 21, 2016, 3:45 UTC](https://www.debian-fr.org/t/appel-de-script-sur-evenement-systeme/34635/2 "2016-02-21T03:45:13Z")

</div>

- regarde du côté des règles [udev](http://doc.ubuntu-fr.org/udev) (désolé pour ceux que ça choquerait d’avoir des liens vers ce dérivé)
- sinon, il y a également [inotify tools](https://github.com/rvoicilas/inotify-tools/wiki/)

---

<div class="post-metadata">

**Author:** ![Mitsu](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/f475e1/32.png) [@Mitsu](https://www.debian-fr.org/u/Mitsu)\
**Post date:** [Février 21, 2016, 3:45 UTC](https://www.debian-fr.org/t/appel-de-script-sur-evenement-systeme/34635/3 "2016-02-21T03:45:14Z")

</div>

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

- sinon, il y a également [inotify tools](https://github.com/rvoicilas/inotify-tools/wiki/)[/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 😕  
Je vais tout de même regarder de son côté oui  
Cela dit si quelqun a une idée aussi, je prends 🙂

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 3:45 UTC](https://www.debian-fr.org/t/appel-de-script-sur-evenement-systeme/34635/4 "2016-02-21T03:45:15Z")

</div>

> [@Mitsu](#):
>
> 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 😕

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:](https://www.debian-fr.org/uploads/default/original/1X/cc83e9b583138e48ff45f96609046b06d06c7f9d.gif "Mr. Green")

---

<div class="post-metadata">

**Author:** ![Totor](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/58f4c7/32.png) [@Totor](https://www.debian-fr.org/u/Totor)\
**Post date:** [Février 21, 2016, 3:45 UTC](https://www.debian-fr.org/t/appel-de-script-sur-evenement-systeme/34635/5 "2016-02-21T03:45:15Z")

</div>

> [@syam](#):
>
> 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.

+1

edit :  
je pense qu’il faut que tu «&nbsp;matches&nbsp;» la clée ID\_FS\_UUID dans ta règle … quelque chose comme ENV{ID\_FS\_UUID}==«&nbsp;&nbsp;»

---

<div class="post-metadata">

**Author:** ![Baruch](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/e274bd/32.png) [@Baruch](https://www.debian-fr.org/u/Baruch)\
**Post date:** [Février 21, 2016, 3:48 UTC](https://www.debian-fr.org/t/appel-de-script-sur-evenement-systeme/34635/6 "2016-02-21T03:48:51Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![BBT1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/ecc23a/32.png) [@BBT1](https://www.debian-fr.org/u/BBT1)\
**Post date:** [Février 21, 2016, 3:48 UTC](https://www.debian-fr.org/t/appel-de-script-sur-evenement-systeme/34635/7 "2016-02-21T03:48:58Z")

</div>

Il y a une API D-Bus fournie par udisks :  
[http://hal.freedesktop.org/docs/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):

```auto

```

[http://reactivated.net/writing\_udev\_rules.html#external-run](http://reactivated.net/writing_udev_rules.html#external-run)

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

```auto

```

---

<div class="post-metadata">

**Author:** ![Mitsu](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/f475e1/32.png) [@Mitsu](https://www.debian-fr.org/u/Mitsu)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/appel-de-script-sur-evenement-systeme/34635/8 "2016-02-21T03:49:09Z")

</div>

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

```auto

```

cela vous semble correct ?

---

<div class="post-metadata">

**Author:** ![BBT1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/ecc23a/32.png) [@BBT1](https://www.debian-fr.org/u/BBT1)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/appel-de-script-sur-evenement-systeme/34635/9 "2016-02-21T03:49:12Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Mitsu](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/f475e1/32.png) [@Mitsu](https://www.debian-fr.org/u/Mitsu)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/appel-de-script-sur-evenement-systeme/34635/10 "2016-02-21T03:49:20Z")

</div>

merci bien pour ces précisions 🙂
