Commandes usuelles sous Linux: mes notes

Temps de lecture approximatif : 12 minutes

+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+
| GESTION DES ACCES AU SYSTEME, DES GROUPES ET DES UTILISATEURS |
+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+

Passer « root »:
****************
1. Sous Ubuntu:

sudo -s

   ou

sudo su

2. Sous Debian:

su

 

Gestion groupes:
********************

aloes:~# groupadd kvmuser

1. Ajout de l’utilisateur dans le group:

# gpasswd -a hyperic hyperic
           ou aussi
# usermod -G hyperic hyperic

 

Gestion utilisateurs:
***********************

aloes:~# useradd -g kvmuser -m kvmuser

-g : GID (group IDentification)
-u : UID (User IDentification)
-m : Créer le repertoire à /home/[nom de l’utilisateur]

1. Ajout d’un utilisateur et création de son « home »:

#useradd -m -d /home/hyperic hyperic

 

2. Ajout/modification d’un mot de passe:

#passwd [nom de l'utilisateur]

3. Connaitre l’ID:

aloes:~# id kvmuser
id=1000(kvmuser) gid=114(kvmuser) groupes=114(kvmuser)
aloes:~#

4. Ajout d’un utilisateur dans un ou plusieur groupe:

usermod -G groupe1,groupe2 -a utilisateur

5. Obtenir la liste des groupes et utilisateurs:

#getent group
     ou
#getent group nom_du_group

 

+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+
| GESTIONS DES FICHIERS ET REPERTOIRES |
+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+

Copier vers un serveur distant: Commande SCP
****************************************************

1. Exemple 1: copier, à partir de notre machine, un fichier vers un serveur distant.

root@monsrv:/opt# scp snmpd_custom.conf remote_serveur:/etc/snmp/snmpd.conf

– snmpd_custom.conf = fichier de départ
– remote_server = adresse du serveur de destination
– /etc/snmp/snmpd.conf = chemin du fichier de destination

2. Exemple 2: récuperer un fichier distant pour le mettre sur notre machine.

root@monsrv:/opt# scp remote_serveur:/etc/snmp/snmpd.conf ./snmpd_custom.conf

 

Supprimer des fichiers ou dossiers avec des espaces dans les noms
************************************************************************

emma@estaque:~/myspace/my_scrapbook$ ls
 scrapbook (Copie de MonNomFamille Moi en conflit 2011-12-09).rdf
 scrapbook (Copie de MonNomFamille Moi en conflit 2012-04-03).rdf
 scrapbook (Copie de MonNomFamille Moi en conflit 2012-01-03).rdf
 scrapbook (Copie de MonNomFamille Moi en conflit 2012-04-10).rdf
 backup
 folders (Copie de MonNomFamille Moi en conflit 2012-03-13).txt
 folders.txt
 cache.rdf
 folders (Copie de MonNomFamille Moi en conflit 2012-03-14).txt
 multibook.txt
 ...
 ...
emma@estaque:~/myspace/my_scrapbook$ rm -r folders\ \(Copie\ de\ MonNomFamille\ Moi\ en\ conflit\ 201*

emma@estaque [Mon-Entreprise]:~/myspace/my_scrapbook$ ls
 backup       collection.html  combine.html  folders.txt     note.html
 cache.rdf  combine.css        data      multibook.txt
 ...
 ...

 

Connaître le type de fichier
*******************************

emma@estaque [Mon-Entreprise]:~$ file Desktop/log_cron.txt
 Desktop/log_cron.txt: ASCII text

emma@estaque [Mon-Entreprise]:~$ file Desktop/facture_ovh.pdf
 Desktop/facture_ovh.pdf: PDF document, version 1.5

emma@estaque [Mon-Entreprise]:~$ file  Desktop/CaptureLDAP_1.png
Desktop/CaptureLDAP_1.png: PNG image data, 1440 x 900, 8-bit/color RGB, non-interlaced

 

Retrouver un fichier par son nom
*************************************

moi@monserveur:~$ locate openvpn
var/lib/update-rc.d/openvpn
...

 

Modifier le mode de création d’un répertoire
**************************************************

Il faut changer l’umask:

vim /etc/login.defs

Pour permettre l’écriture et l’exécution au groupe,

mettre « UMASK 002 »

Permettre au groupe d’ecrire dans un dossier
**************************************************

chmod -R g+s /mon_dossier

 

Taille de dossier:
*******************
-h = affichage « humain » en Ko,Go,Mo .
Exemple:

root@noyer:/# du -hs *
 26G     backup
 3.8M    bin
 6.9M    boot
 7.5G    data
 116K    dev
 ...
root@noyer:/# du -hs /etc/*
 16K     /etc/acpi
 4,0K    /etc/adduser.conf
 4,0K    /etc/adjtime
 4,0K    /etc/aliases
 12K     /etc/aliases.db
 8,0K    /etc/alternatives
 408K   /etc/apache2
 ...

 

Compression en tar.gz:
**************************

alcazar:/data/vz/private# tar -cvf rahan.tar.gz ./222 

 

Décompression d’un .tar.gz:
*******************************

srvhome:/media/DATAS/BACKUP_SRVHOME/ARCHIVES# tar -xvzf srvhome.20100117.master.tar.gz
 usr/local/sbin/
 usr/local/sbin/automysqlbackup-2-5.sh
srvhome:/media/DATAS/BACKUP_SRVHOME/ARCHIVES#

 

Compresser/décompresser un .zip
**************************************

1. Compression .zip

# zip -r nom_du_fichier.zip repertoire_ou_fichier

2. Decompression .zip

# unzip nom_du_dossier -d nom_destination

 

Afficher le contenu d’un fichier sans les lignes commentées:
*****************************************************************

grep -v '^[\t ]*; '<nom fichier> 
         
                  ou

egrep -a -v '^[[:space:]]*;' <nom fichier> | egrep -a '[[:print:]]'

 

Commande: « RSYNC »
************************

– Synchroniser deux répertoires avec rsync:

1. Exemple de syntaxe:
De nous vers le client:

rsync -avzH --progress --stats * root@frene.dg.mon
_client_1.ch:/data/deploy_monclient_1

Depuis le Client vers nous:

rsync -avzH --progress --stats root@frene.dg.mon
_client_1.ch:/data/deploy_monclient_1/* .

2. En cas de problème avec l’utilisation de l’option –filter

[note importante]
ATTENTION, SUIVANT LA VERSION DE RSYNC UTILISEE, CERTAINES OPTIONS ONT EVOLUE !
VERIFIER LA SYNTHAXE EN TAPANT « man rsync ».
[/note]

Attention, l’adresse du répertoire à exclure doit être RELATIVE au répertoire de sauvegarde !

il faut donc écrire:

–filter « – .VirtualBox/ »

et non

–filter « – /home/dom/.VirtualBox/ »

ce qui donne :

rsync -rltgoDv --del --ignore-errors --force --filter "- .VirtualBox/" /home/moi/ /media/my_backup/

…qui fonctionne !

3. Autres exemples:

rsync -avzH --delete-during --filter "- media/disk/" --filter "- proc/" --filter "- sys/" --filter "- tmp/" --filter "- dev/" / /media/disk

ou encore

time rsync -avzH --numeric-ids --delete --filter "- computers/infos/" --filter "- logs/" svg-info-pldeploy/ root@genepi:/data/shares/svg-info-pldeploy

 

4. Utilisation dans un bash

...
# Example for RSYNC_OPTIONS:
RSYNC_OPTIONS="-avH --exclude=satigny/media/archives --itemize-changes --stats --numeric-ids --delete-during"
#
rsync $RSYNC_OPTIONS /backup/rsnapshot/snapshots/hourly.0/ /media/BACKUP_5a4ab233-4e/MY-ENTREPRISE_BACKUP
 ...

 

5. Se connecter à une machine distante et synchroniser un répertoire sur un autre local:

rsync -avzH --numeric-ids --delete --exclude='*.exe' --exclude='*.au3' --progress  --stats root@192.168.3.168:/home/pldeploy/ pldeploy/

 

6. Synchroniser un répertoire local vers un hôte distant:

rsync -avz --exclude='*.spc' --exclude='.auth_var-WORK.ini' --exclude='.auth_var-DOM.ini' svg-info-pldeploy/ root@192.168.3.168:/data/home/pldeploy

– Backuper par exemple une vz d’un serveur nommé cirrus vers un autre serveur nommé fibratus.

 root@cirrus:~# vzlist
 VEID      NPROC STATUS  IP_ADDR         HOSTNAME
 245         34 running 192.168.16.245  flocus
 251        122 running 192.168.16.251  nimbo
 252         18 running 192.168.16.252  stratus
 root@cirrus:~#
root@fibratus:~# vzlist
 CTID      NPROC STATUS    IP_ADDR         HOSTNAME
 253        257 running   192.168.16.253  mail.monentreprise.org
 root@fibratus:~#
 root@fibratus:~# time rsync -avzH --numeric-ids --delete -e "ssh -l root@cirrus" root@cirrus:/data/vz/priv
ate/253/ /data/vz/private/253/

 

7. Exécuter rsync vers un port distant différent (exemple lors d’un forward du port ssh)

rsync -avzH --progress --stats --rsh='ssh -p2222' /data/pldeploy/pldeploy_aslo_04-07-2012/ root@localhost:/data/shares/svg-info-pldeploy/ 

 

Commande: « FIND »
**********************

1. Trouver un fichier en fonction de son nom

find . -name "databases*"

2. Trouver un éléments de type répertoire

find . -name "config" -type d

3. Lister le contenu de répertoires correspondant à un masque

find . -type d -name "config" -exec ls -l {} \;

4. Modifier les droits des fichiers de type répertoire

find . -type d -exec chmod g+x {} \;

Commande très utile pour donner les droits d’exécution seulement aux répertoires.

5. Recherche à l’aide d’opérateurs logiques

find /tmp ( ! -user webmaster )

Cette commande renverra tous les fichiers de /tmp n’appartenant pas à l’utilisateur webmaster

find / ( -type d -a -user webmaster )

Cette commande renverra tous les fichiers de type répertoire ET (option -a) qui appartiennent à webmaster

find / ( -name a.out -o -name ’*.o’ ) -atime +7 -exec rm {} \;
 

Cette commande supprimera tous les fichiers dont le nom correspond est « a.out » OU se terminant par « .o » ET dont
la date du dernier accès est antérieure à 7 jours.

find . -path './*softwares' -prune -o  -name "*.bat" -type f -exec grep -Hri "OSVERSION" {} \;

Cette commande permet de rechercher l’occurence « OSVERSION » dans tous les fichiers de type « .bat » en excluant
le répertoire « softwares ». Seul le chemin d’accès aux fichiers correspondants sera affiché.

Inodes
********

1. Renommer en utilisant le « inum »:

Pour connaitre l’inode:

ls -ailtr

 

Pour renommer en fonction du « inum »:

find -inum <N°inum> -exec mv {} <nouveau nom> \;

               Exemple 

find -inum  6869985 -exec mv {} test_1 \;

 

2. Supprimer en utilisant le « inum »:

Parfois certains fichiers sont nommés avec des caractères qui posent des problèmes d’accès ( Ex: « ~$ Mon document.doc » ).

On affiche le inum du fichier:

#ls -li
115288 -rw-r--r-- 1 monuser monuser     2359 2010-03-
25 23:01 ~$ Mon document.doc

 

Ensuite on supprime en fonction du « inum » du fichier

find -inum 115288 -exec rm {} \;

 

3. Trouver un ( ou plusieur ) type de fichier:

find . -name "*WRL*tmp*" -exec ls -l  {} \;

 

4. Renommer un fichier:

Ex: Touver tous les fichiers qui commencent par un « : » et les renommer en remplaçant les « : » en « __ ».

find . -iname ":*" | rename 's/:/_/g'

 

5. Supprimer plusieurs fichiers de même type:

find . -name "*.spc" -print0 | xargs -0 rm

 

6. Remplacer un caractère par un autre:

Exemple du fichier: ./projets2007/Cloe_espaceVEHICULE/graphique/:2eDS_Store

find . -iname ':*' | sed -e 's/:/__/g' 

Resultat: ./projets2007/Cloe_espaceVEHICULE/graphique/__2eDS_Store

 

7. Trouver tous les fichiers qui appartiennent à l’utilisateur « nagios », qui sont des liens et les afficher:

root@cir:/etc# find . -user nagios -type l -exec ls -l {} \;

 

8. Trouver tous les fichiers qui appartiennent à l’utilisateur « nagios » , qui sont des liens et changer les droits en « root.root »:

root@cirrus:/etc# find . -user nagios -type l -exec chown -h root.root {} \;

 

9. Trouver un fichier dans une arborescence:

find * -name "commandes.txt"

 

10. Remplacer un mot dans un type de fichier

find . -name "*.php" -print0 | xargs -0 sed -i 's/georges@6ma.fr/michel@6ma.fr/g'

 

11. Trouver des fichiers qui ont été modifié il y a moin de 1 jour

find /backup/rsnapshot/snapshots/monclient_2/daily.0/outlook-backup/Outlook/ -mtime -1 -print0 | xargs -r -0 -l ls -altr

 

12. Trouver des fichiers se terminant par « _status.ini » et contenant le mot « computer_admin_status »

find ./computers/infos/ -name "*_status.ini" -type f -exec ls {} \; -exec grep computer_admin_status {} \;

 

Commande: « SED »
*********************

1.0 Substituer un mot par un/des autre(s) mot(s)

sed -i 's/georges@6ma.fr/michel@6ma.fr/g'

1.1 Substituer un mot commencant par un motif spécifique…

sed -i 's/^toto.*/'toto'\t'192.167.5.4'\t'127'/g' /tmp/test.txt
cat /usr/local/nagios/etc/nagios.cfg | sed -e 's/check_for_updates=0//g' >> /tmp/nagios.cfg

2. Dans Vim:

:'<, '>s/admin_op/computers\\maintenance/g

le « \ » après « computers » permet de ne pas interprêter le « \ » car nous souhaitons remplacer le mot « admin_op » par « computers\maintenance »

2.1 Enlever tous les commentaires dans un fichiers

cat $TRAFFIC_IDENTIFIED | sed -e '/^[ ]*#/d' -e '/^[ ]*;/d' -e '/^[ ]*+/d' -e '/^$/d'

2.2 Remplacement d’un caractère dans un type de fichier

Exemple: recherche d’une chaîne à traiter dans le fichier « telsearch »

toto@monserveur:~$ cat /var/log/callerid_lookup/telsearch | grep -w "class=\"fn org\""
<h5><a href="/tresloin/rue-du-lac-54/mon-client-1" class="fn org">nom de mon client 1</a></h5>
 <h5><a href="/tresloin/rue-du-lac-54/monclient_2" class="fn org">Juridique CLIENT2</a></h5>
 <div id="telrbc35d75292b5630a" class="tel_item"><div class="telrecord vcard"><table class=\
 "record"><tr><td rowspan="2" class="r_resleft"> <h5>
 <a href="/tresloin/rue-du-lac-54/rassemblement-logement" class="fn org">Rassemblement logement</a></h5>
toto@monserveur:~$

Premier traitement: nettoyer pour enlever le superflux

toto@monserveur:~$ cat /var/log/callerid_lookup/telsearch | grep -w "class=\"fn org\"" | sed s/"<[^>]*>"/""/g
nom de mon client 1
Juridique CLIENT2
Rassemblement logement
toto@monserveur:~$

Second traitement: convertir de iso-8859-1 vers utf-8

toto@monserveur:~$ cat /var/log/callerid_lookup/telsearch | grep -w \
"class=\"fn org\"" | sed s/"<[^>]*>"/""/g | iconv -f iso-8859-1 -t utf-8
nom de mon client 1
Juridique CLIENT2
Rassemblement logement
toto@monserveur:~$

Troisième traitement: conserver que les deux premières lignes

toto@monserveur:~$ cat /var/log/callerid_lookup/telsearch | grep -w "class=\"fn org\"" | sed s/"<[^>]*>"/""/g | iconv -f iso-8859-1 -t utf-8 | head -n2
nom de mon client 1
Juridique CLIENT2
toto@monserveur:~$

Exemple d’utilisation de sed pour supprimer les accents:

toto@monserveur:~$ cat /var/log/callerid_lookup/telsearch | grep -w "class=\"fn org\"" | sed s/"<[^>]*>"/""/g | iconv -f iso-8859-1 -t utf-8 | sed 'y/àâçéèêëîïôöùüÂÀÇÉÈÊËÎÏÔÖÙÜ/aaceeeeiioouuAACEEEEIIOOUU/' | head -n1
 nom de mon client 1
toto@monserveur:~$

Remplacer entièrement une ligne:

ipsrc="188.138.100.46"; new_count="5000"; echo "$ipsrc $new_count"; cat black\
list_candidate.txt | sed -e 's/^'"$ipsrc"'.*/'"$ipsrc"' '"$new_count"'/g' > test.txt 
cat filetest.txt | sed -e 's/^'"ipsrc=192.168.9.110"'.*/'"ipsrc=192.168.9.\
 110"'\t'"srcport=5900"'\t'"dstport=50417"'\t'"total_count=800"'\t\t'"first\
 time=04-04-2012-13:49"'\t\t'"lastupdate=`date +%d-%m-%Y-%H:%M`"'\t'"[Case_9]"'/g'

Tronquer une addresse IP

moi@estaque [Mon-Entreprise]:~$ echo 192.168.30.2 | cut -d. -f1-3 | sed 's|\.||g'
 19216830
moi@estaque [Mon-Entreprise]:~$ echo 192.168.30.2 | cut -d. -f1-2 | sed 's|\.||g'
 192168
moi@estaque [Mon-Entreprise]:~$

Supprimer tous les caractères spéciaux

echo "bonjour !!! comment allez-vous???" | sed 's/\W/ /g'

Supprimer le retour chariot:
Il suffit simplement d’effacer le caractère « \r » (retour chariot) de fin de ligne.
Le caractère « \r » (retour chariot) est représenté symboliquement par « ^M », qui s’obtient par la séquence de touches suivante « CTRL-V » + « CTRL-M ».

sed 's/^M$//' fichier

Avec la version GNU-sed (gsed 3.02.80 et supérieur), on peut utiliser la notation ASCII :

sed 's/\x0D$//' fichier

On peut aussi utiliser la commande « tr » pour cela

cat mon_fichier.txt | tr -d '\r'

Supprimer plusieurs mots ou caractères

root@monserveur:$ grep -ri "version" /data/monfichier.txt | egrep -wi "Windows" | awk '{print $3,$4,$5}'
XP [version 5.1.2600]
root@monserveur:$ grep -ri "version" /data/monfichier.txt | egrep -wi "Windows" | awk '{print $3,$4,$5}' | sed 's/version\|\[\|\]\|XP\|\ //g'
5.1.2600
root@monserveur:$

 

Commande: « GREP »
***********************

1. Trouver un mot dans un fichier:
Exemple de syntaxe:

grep -ri "mot_exemple" *
grep -ri "mot_exemple" .      ;uniquement là ou on se trouve.

2. Ne pas afficher la ligne « grep »

clematite:~# ps aux | grep "file=/media/sata500/new-mobility/" | grep -v "grep"
 root     16742 17.2 68.2 4406680 4167740 ?     Sl   Jan12 499:03 /usr/bin/kvm -vnc :1 -k fr-ch -smp 4 -usbdevice tablet -usb -drive file=/media/sata500/new-mobility/mob-diskC.qcow2,index=0,media=disk -drive file=/media/sata500/new-mobility/mob-diskE.qcow2,index=2,media=disk -drive file=/media/sata500/new-mobility/mob-diskF.qcow2,index=3,media=disk -boot c -m 4048 -net nic,macaddr=41:58:00:12:32:54,model=rtl8139 -net tap,ifname=tap0,script=no -vga std -daemonize -pidfile /var/run/kvm/run_kvm_mobility.pid
clematite:~#

3. Trouver le nombre d’occurence dans un fichier et l’afficher:

root@cirrus:/tmp# grep -c "<digestenglish@mycop.coop>" /tmp/envoi_digest3.txt
 258
root@cirrus:/tmp#

4. Afficher uniquement les fichiers NE contenant PAS le mot recherche.

grep -riL "OpenERP" . | grep "installed-programs.txt"
./FOURMI08/FOURMI08_installed-programs.txt
./FOURMI16/FOURMI16_installed-programs.txt
./FOURMI02/FOURMI02_installed-programs.txt
./FOURMI38/FOURMI38_installed-programs.txt
./FOURMI37/FOURMI37_installed-programs.txt

ou

root@bourdon:/data/pldeploy# find ./logs/*/2 -name "*_pldeploy-infos.txt" -type f \
 -exec grep -L runas_admin_tasks.bat {} \;
./logs/FOURMI15/2/FOURMI15_pldeploy-infos.txt
./logs/FOURMI26/2/FOURMI26_pldeploy-infos.txt
./logs/FOURMI33/2/FOURMI33_pldeploy-infos.txt
./logs/FOURMI42/2/FOURMI42_pldeploy-infos.txt
root@bourdon:/data/pldeploy#

5. Afficher uniquement des nombres

dig <le nom fqdn machine> +short | grep -E "^[0-9]|[0-9]$"

6. Afficher le résultat sur plusieurs mots

grep -ri "svg-info-pldeploy" . | grep -iE "permitted | closed"

 

Commande « Zenity »
***********************

Envoi un message à l’utilisateur

grep -ri "test" $HOME | zenity --title "Backup" --progress --text="Sauvegarde en cours...merci de ne pas \
 éteindre votre poste" --pulsate --no-cancel --auto-close
zenity --info --display=:0.0 --text "Joyeux anniversaire !" 

 

Accéder à un lecteur réseau depuis un navigateur:
*******************************************************

La syntaxe est la suivante: file:///<lettre du lecteur>:/<mon dossier>
Ex:

file:///F:/COMPTA

 

Commande WGET
*********************

1. Télécharger un fichier sur un site protégé par htaccess

root@cerisier:/opt/install_nagios-ndo-centreon# wget http://download.mon-entreprise.com/centreon-2.3.8.tar.gz
 --2012-06-12 11:36:20--  http://download.mon-entreprise.com/centreon-2.3.8.tar.gz
 Resolving download.mon-entreprise.com...98.195.97.157 Connecting to download.mon-entreprise.com|98.195.97.157|:80... connected.
 HTTP request sent, awaiting response... 401 Authorization Required
 Authorization failed. root@cerisier:/opt/install_nagios-ndo-centreon# wget http://download.mon-entreprise.com/centreon-2.3.8.tar.gz --http-user=mon-entreprise --http-password=<mot de passe>
 --2012-06-12 11:36:05--  http://download.mon-entreprise.com/centreon-2.3.8.tar.gz
 Resolving download.mon-entreprise.com... 98.195.97.157
 Connecting to download.mon-entreprise.com|98.195.97.157|:80... connected.
 HTTP request sent, awaiting response... 401 Authorization Required
 Reusing existing connection to download.mon-entreprise.com:80.
 HTTP request sent, awaiting response... 200 OK
 Length: 7538568 (7.2M) [application/x-gzip]
 Saving to: `centreon-2.3.8.tar.gz' 100%[======================================================>] 7,538,568   2.21M/s   in 3.3s 2012-06-12 11:36:09 (2.21 MB/s) - `centreon-2.3.8.tar.gz' saved [7538568/7538568] root@cerisier:/opt/install_nagios-ndo-centreon# ls -altr
 total 7404
 drwxr-xr-x 3 root root    4096 Jun 11 12:18 ..
 -rw-r--r-- 1 root root 7538568 Jun 11 13:58 centreon-2.3.8.tar.gz
 drwxr-x--- 2 root root    4096 Jun 12 11:36 .
 root@cerisier:/opt/install_nagios-ndo-centreon#

 

Encryption
*************

1. Commande « encfs »:

— Pour monter le dossier crypté:

encfs /data/.safe /home/monhome/pwd

Entrer ensuite le mot de passe !

— Pour démonter après consultation:

fusermount -u /home/monhome/pwd

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

La suite aux pages suivantes 😉

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Le temps imparti est dépassé. Merci de saisir de nouveau le CAPTCHA.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.