# Comment faire une alerte par courriel sur modification d’un fichier

**URL:** <https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111>\
**Category:** Support Debian\
**Created:** [Avril 16, 2023, 9:06 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111 "2023-04-16T21:06:17Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![ignace1972](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ignace1972/32/12214_2.png) [@ignace1972](https://www.debian-fr.org/u/ignace1972)\
**Post date:** [Avril 16, 2023, 9:06 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111/1 "2023-04-16T21:06:17Z")

</div>

Bonsoir à toutes et à tous.  
J’ai un serveur Nginx sur une Debian 11 arm64 (pour l’instant dans le routeur Freebox Delta).  
J’utilise pour les statistiques des visites du serveur Matomo avec injection du journal d’accès à Nginx.  
Ce que j’aimerais, c’est être prévenu par courriel quand le fichier journal `/var/log/nginx/access.log.1` est modifié pour pouvoir l’injecter dans Mamoto (il est modifié lorsque access.log est renommé en access.log.1 périodiquement).  
Une personne connait-elle le moyen de le faire ou un tuto ou cela serait expliqué ?  
Merci d’avance.

---

<div class="post-metadata">

**Author:** ![PmGs](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/dfb087/32.png) [@PmGs](https://www.debian-fr.org/u/PmGs)\
**Post date:** [Avril 16, 2023, 10:08 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111/2 "2023-04-16T22:08:08Z")

</div>

Hello,  
As-tu recherché sur le web «&nbsp;Envoyer un mail sous debian en ligne de commande - cli&nbsp;» ou " Send Email in Linux from Command Line"?  
Tu trouveras de nombreux exemples.

---

<div class="post-metadata">

**Author:** ![ignace1972](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ignace1972/32/12214_2.png) [@ignace1972](https://www.debian-fr.org/u/ignace1972)\
**Post date:** [Avril 16, 2023, 10:18 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111/3 "2023-04-16T22:18:47Z")

</div>

Bonsoir, PmGs.  
Envoyer un courriel, ça je sais faire avec un script.  
Édit :  
Je crois que j’ai trouvé pour surveiller le fichier avec Watchman.

---

<div class="post-metadata">

**Author:** ![PmGs](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/dfb087/32.png) [@PmGs](https://www.debian-fr.org/u/PmGs)\
**Post date:** [Avril 16, 2023, 11:09 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111/4 "2023-04-16T23:09:06Z")

</div>

Je n’avais pas compris que ton pb était la détection de la modification.

Je ne connaissais et donc n’utilise pas watchman mais un simple script fait l’affaire :

- comparaison de la date de modification du fichier actuel avec celle enregistrée
- enregistrement de la date de modification du fichier actuel

---

<div class="post-metadata">

**Author:** ![ignace1972](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ignace1972/32/12214_2.png) [@ignace1972](https://www.debian-fr.org/u/ignace1972)\
**Post date:** [Avril 17, 2023, 1:11 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111/5 "2023-04-17T01:11:09Z")

</div>

Parfois, je m’exprime avec les pieds et les pieds ne sont pas faits pour ça.  
Je suis tombé sur ce tuto :  
[https://www.kanjian.fr/comment-surveiller-les-fichiers-sur-votre-serveur-linux.html](https://www.kanjian.fr/comment-surveiller-les-fichiers-sur-votre-serveur-linux.html)  
Je n’ai pas testé encore.

---

<div class="post-metadata">

**Author:** ![Almtesh](https://www.debian-fr.org/user_avatar/www.debian-fr.org/almtesh/32/10312_2.png) [@Almtesh](https://www.debian-fr.org/u/Almtesh)\
**Post date:** [Avril 17, 2023, 5:34 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111/6 "2023-04-17T05:34:23Z")

</div>

Bonjour,

Concernant la liaison _modification→e-mail_, tu peux utiliser incron qui se trouve dans le dépôt rétroporté.

> [@apt show incron/bullseye-backports](#):
>
> ```plaintext
> Package: incron
> Version: 0.5.12-3~bpo11+1
> Priority: optional
> Section: admin
> Maintainer: Emmanuel Bouthenot <kolter@debian.org>
> Installed-Size: 302 kB
> Pre-Depends: init-system-helpers (>= 1.54~)
> Depends: libc6 (>= 2.14), libgcc-s1 (>= 3.0), libstdc++6 (>= 5.2), lsb-base (>= 3.2-14), adduser
> Homepage: https://github.com/ar-/incron
> Download-Size: 79,3 kB
> APT-Sources: http://deb.debian.org/debian bullseye-backports/main amd64 Packages
> Description: cron-like daemon which handles filesystem events
> incron is an "inotify cron" system. It works like the regular cron but is
> driven by filesystem events instead of time events. This package provides two
> programs, a daemon called "incrond" (analogous to crond) and a table
> manipulator "incrontab" (like "crontab").
> .
> incron uses the Linux Kernel inotify syscalls.
> .
> like cron, each user can edit its own incron tables.
> .
> incron can be used to :
> - notifying programs (e.g. server daemons) about changes in configuration
> - guarding changes in critical files (with their eventual recovery)
> - file usage monitoring, statistics
> - automatic on-crash cleanup
> - automatic on-change backup or versioning
> - new mail notification (for maildir)
> - server upload notification
> - installation management (outside packaging systems)
> - ... and many others
> 
> ```

Je ne l’ai jamais utilisé, du coup, dis-moi si ça correspond à ton besoin.

---

<div class="post-metadata">

**Author:** ![PmGs](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/dfb087/32.png) [@PmGs](https://www.debian-fr.org/u/PmGs)\
**Post date:** [Avril 17, 2023, 7:04 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111/7 "2023-04-17T07:04:20Z")

</div>

Je ne pensais pas non plus que ton pb était l’utilisation de cron.

Le texte du lien est bien long pour une simple utilisation de find qui te renvoie le(s) fichier(s) modifié(s) depuis 24h, ce qui n’est pas le besoin que tu as exprimés 🙂

---

<div class="post-metadata">

**Author:** ![PmGs](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/dfb087/32.png) [@PmGs](https://www.debian-fr.org/u/PmGs)\
**Post date:** [Avril 17, 2023, 7:05 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111/8 "2023-04-17T07:05:47Z")

</div>

Good, je ne connaissais pas, je vais probablement l’adopter dans le futur et pour @ignace1972

---

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Avril 17, 2023, 9:04 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111/9 "2023-04-17T09:04:36Z")

</div>

Si c’est l’import des logs nginx dans mamoto dont tu as besoin (si je comprends bien le besoin premier, alors que la modification des logs est en fait le problème XY ), regarde sur ce tutoriel:

> **[Import automatique des logs Nginx dans Matomo](https://wiki.abyssproject.net/fr/matomo/nginx-log-import)**
>
> Import automatisé des logs Nginx de la veille dans Matomo

car quand le fichier access.log.1 a changé c’est qu’il y a eu rotation des logs. Donc ce tuto qui se base justement sur la rotation des logs devrait faire l’affaire.  
si la rotation est plus rapide qu’une fois par jour, alors il suffit de changer la période dans le tuto.

---

<div class="post-metadata">

**Author:** ![ignace1972](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ignace1972/32/12214_2.png) [@ignace1972](https://www.debian-fr.org/u/ignace1972)\
**Post date:** [Avril 17, 2023, 1:27 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111/10 "2023-04-17T13:27:26Z")

</div>

Bonjour à tous.  
PmGs, Cron, c’est ok pour moi.  
Avant de tester je vous soumets solution qui me parait bonne d’après ce que j’ai lu sur le lien de Zargos et une recherche complémentaire :

```auto
     /var/log/nginx/*.log {
                hourly
                missingok
                rotate 14
                compress
                delaycompress
                notifempty
                create 0744 www-data adm
                sharedscripts
                prerotate
                        if [-d /etc/logrotate.d/httpd-prerotate]; then \
                                run-parts /etc/logrotate.d/httpd-prerotate; \
                        fi \
                endscript
                postrotate
                        invoke-rc.d nginx rotate >/dev/null 2>&1
                endscript
        }

```

J’ignore la valeur à donner à `rotate` (j’ai regardé la doc de Nginx qui donne des liens morts qui m’auraient peut-être permis de le savoir).

J’ai lu que ça ne fonctionnait pas tel quel, je dois copier `/etc/cron.daily/logrotate` dans `/etc/cron.hourly/`

Dans mon esprit, ça devrait faire un nouveau access.log.1 à chaque heure pile.

Dans un second temps, un `crontab`.  
`sudo crontab -e`

`#\5 * * * * python3 /opt/matomo/matomo-log-analytics/import_logs.py --config /var/www/html/matomo/config/config.ini.php --url=https://matomo.mon.site.fr --idsite=1 --recorders=8 --enable-http-errors --enable-http-redirects --enable-static --enable-bots /var/log/nginx/access.log.1`

S’il y a un `access.log.1` toutes les heures pile, j’injecte toutes les heures cinq le nouveau `access.log.1` dans Matomo.  
Cela devrait me permettre quand je me connecte à Matomo d’avoir l’activité jusqu’à une heure dans le passé.

Si vous voyez des erreurs, ne vous gênez pas.

---

<div class="post-metadata">

**Author:** ![Clochette](https://www.debian-fr.org/user_avatar/www.debian-fr.org/clochette/32/8757_2.png) [@Clochette](https://www.debian-fr.org/u/Clochette)\
**Post date:** [Avril 17, 2023, 2:07 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111/11 "2023-04-17T14:07:49Z")

</div>

> [@ignace1972](#):
>
> J’ignore la valeur à donner à `rotate` (j’ai regardé la doc de Nginx qui donne des liens morts qui m’auraient peut-être permis de le savoir).

C’est sur la documentation de logrotate qu’il fallait te documenter 😉 , rotate c’est le nombre de journaux que tu souhaite conserver, passer ce nombre, il supprime le plus ancien lors de la rotation.  
En gros c’est la rétention.

---

<div class="post-metadata">

**Author:** ![ignace1972](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ignace1972/32/12214_2.png) [@ignace1972](https://www.debian-fr.org/u/ignace1972)\
**Post date:** [Avril 17, 2023, 2:34 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111/12 "2023-04-17T14:34:16Z")

</div>

Bonsoir, Clochette.  
Je te remercie pour ta réponse.  
En fait, je souhaiterais que Nginx conserve tous les fichiers.  
À ce jour, j’ai access.log et access.log.1 tel quel et 20 fichiers access.log.x compressé soit tous les journaux depuis septembre 2022.  
Si j’en crois cette traduction de la manpage, il est possible qu’il envoie par courriel le fichier plutôt que le supprimer.  
Je creuserai cela avant de faire quoi que ce soit.  
Une autre idée, comme on peut forcer la rotation, je ne change rien à la logrotate. Je fais alors la rotation et l’injection avant d’aller sur Matomo, et déplace les logs compressés sur mon ordinateur.  
Cela serait bien.

---

<div class="post-metadata">

**Author:** ![Clochette](https://www.debian-fr.org/user_avatar/www.debian-fr.org/clochette/32/8757_2.png) [@Clochette](https://www.debian-fr.org/u/Clochette)\
**Post date:** [Avril 17, 2023, 3:37 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111/13 "2023-04-17T15:37:28Z")

</div>

D’après la configuration de logrotate que tu nous à partager, tu conserves 14 fichiers qui seront compressés après rotation chaque heure.

Si tu veux conserver plus de 14 heures il va falloir le nombre de rétention que tu souhaite conserver ou ne pas chercher à faire autrement que la documentation.

Tu as peur que ton log journalier soit si important ?

> [@ignace1972](#):
>
> Si j’en crois cette traduction de la manpage, il est possible qu’il envoie par courriel le fichier plutôt que le supprimer.

Aucun intérêt, tu souhaite simplement importer puis archiver ces données pour Matomo, ça n’a rien à voir avec la rotation de tes logs nginx et leur conservation sur le serveur.

En premier lieu configure correctement ta rotation de log nginx à ta convenance, puis mets en place comme précisé sur le lien que @Zargos t’a fourni l’import dans Matomo.  
Nul besoin d’envoi de mail ou de script tordu ou de modifier les rétention ou la rotation de tes logs.

De ce que je vois tu travaillera avec le log de la veille, il faut donc seulement que ce log soit bien présent et représente bien le log journalier de la veille.

---

<div class="post-metadata">

**Author:** ![ignace1972](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ignace1972/32/12214_2.png) [@ignace1972](https://www.debian-fr.org/u/ignace1972)\
**Post date:** [Avril 17, 2023, 4:34 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111/14 "2023-04-17T16:34:27Z")

</div>

Je ne travaille pas exactement avec le log de la veille.  
J’ai injecté les journaux access.log.1 à access.log.21.  
Depuis, je note la dernière entrée injectée dans Matomo.  
Quand j’ai besoin d’aller sur Matomo, je recherche la l’entrée que j’ai noté dans access.log et j’en copie toutes les entrées suivantes dans un fichier que j’injecte dans Matomo.  
Je cherche donc une solution plus pratique.  
Pour vous donner une idée du rythme actuelle de rotation :

```nohighlight
-rw-r----- 1 www-data adm 7,0M 4 mars 15:41 access.log.2.gz
-rw-r----- 1 www-data adm 5,3M 1 févr. 05:50 access.log.3.gz
-rw-r----- 1 www-data adm 13M 12 janv. 04:28 access.log.4.gz
-rw-r----- 1 www-data adm 3,6M 1 déc. 00:00 access.log.5.gz
-rw-r----- 1 www-data adm 4,3M 31 oct. 23:59 access.log.6.gz
-rw-r----- 1 www-data adm 1,2M 1 oct. 2022 access.log.7.gz
-rw-r----- 1 www-data adm 106K 22 sept. 2022 access.log.8.gz
-rw-r----- 1 www-data adm 122K 21 sept. 2022 access.log.9.gz
-rw-r----- 1 www-data adm 96K 20 sept. 2022 access.log.10.gz
-rw-r----- 1 www-data adm 76K 19 sept. 2022 access.log.11.gz
-rw-r----- 1 www-data adm 81K 18 sept. 2022 access.log.12.gz
-rw-r----- 1 www-data adm 91K 17 sept. 2022 access.log.13.gz
-rw-r----- 1 www-data adm 108K 16 sept. 2022 access.log.14.gz
-rw-r----- 1 www-data adm 118K 15 sept. 2022 access.log.15.gz
-rw-r----- 1 www-data adm 104K 14 sept. 2022 access.log.16.gz
-rw-r----- 1 www-data adm 71K 13 sept. 2022 access.log.17.gz
-rw-r----- 1 www-data adm 117K 12 sept. 2022 access.log.18.gz
-rw-r----- 1 www-data adm 192K 11 sept. 2022 access.log.19.gz
-rw-r----- 1 www-data adm 183K 10 sept. 2022 access.log.20.gz
-rw-r----- 1 www-data adm 144K 9 sept. 2022 access.log.21.gz

```

Oui, le rythme de rotation a changé pourtant, je n’ai rien modifié.  
Je pense que je ne vais rien changer à la configuration.  
Déplacer les journaux achevés sur mon ordi.  
Une fois /var/log/nginx propre,  
Dès que j’ai besoin d’aller sur Matomo, je force la rotation,  
J’injecte le fichier créé que je déplace sur mon ordi.  
C’est pour moi, le plus simple.

---

<div class="post-metadata">

**Author:** ![Clochette](https://www.debian-fr.org/user_avatar/www.debian-fr.org/clochette/32/8757_2.png) [@Clochette](https://www.debian-fr.org/u/Clochette)\
**Post date:** [Avril 17, 2023, 9:04 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111/15 "2023-04-17T21:04:11Z")

</div>

> [@ignace1972](#):
>
> Je ne travaille pas exactement avec le log de la veille.

C’est justement là pour moi ton problème, si tu te simplifie un peu la vie à mettre une rotation automatique de ton log de façon journalière et que tu script l’import directement dans Matomo comme expliqué quel est ton problème ?

Tu laisse la rotation faire son travail tranquillement pour éviter une saturation et conserver tes logs dans la mesure du nécessaire.  
L’import se fera chaque jour dans Matomo sans aucune suppression ou autre chose.

---

<div class="post-metadata">

**Author:** ![ignace1972](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ignace1972/32/12214_2.png) [@ignace1972](https://www.debian-fr.org/u/ignace1972)\
**Post date:** [Avril 17, 2023, 9:12 UTC](https://www.debian-fr.org/t/comment-faire-une-alerte-par-courriel-sur-modification-d-un-fichier/88111/16 "2023-04-17T21:12:28Z")

</div>

Bonsoir à toutes et à tous.  
Je crois que j’ai trouvé la solution qui me convient.  
Dans un script shell :  
`rm /home/ignace/access-nginx/*`  
`sudo logrotate -vf /etc/logrotate.d/nginx`  
`cp /var/log/nginx/access.log.* /home/ignace/access-nginx/`  
`sudo python3 /opt/matomo/matomo-log-analytics/import_logs.py --config /var/www/html/matomo/config/config.ini.php --url=https://matomo.mon.site.fr --idsite=1 --recorders=8 --enable-http-errors --enable-http-redirects --enable-static --enable-bots access-nginx/access.log.1`  
`sudo rm /var/log/nginx/access.log.*`

Pour la première fois, faire une sauvegarde des fichiers `access.log.1.*` avant de lancer le script.

Sur machine locale :  
`scp id@192.168.x.x:~/access-nginx/* /home/ignace/web/log_nginx/17.04.2023/`

Et voilà.
