1 line
15 KiB
JSON
1 line
15 KiB
JSON
[{"uuid":"f83af4d3-66f9-4959-89f1-ea7d0c289663","slug":"dconf-editor","title":"300 · Dconf Editor","category":"Informatique","author":"cedric@abonnel.fr","cover":"","published":true,"published_at":"2023-02-16 14:33:29","created_at":"2023-02-16 14:33:29","updated_at":"2023-02-16 14:33:29","tags":[],"plain":"Dconf Editor est principalement associé à l'environnement de bureau GNOME, bien qu'il puisse également être utilisé avec d'autres environnements de bureau tels que MATE, XFCE, Cinnamon, Unity, etc. (car basés sur GNOME). Il est également couramment utilisé sur les distributions Linux qui utilisent GNOME comme environnement de bureau par défaut, telles que Fedora, Debian, Ubuntu, etc. Dconf Editor est développé par la communauté GNOME et est généralement inclus dans les dépôts officiels des distributions Linux. Il est souvent préinstallé sur les systèmes qui utilisent GNOME comme environnement de bureau par défaut. Le système de stockage de configuration Dconf, qui est utilisé par Dconf Editor, a été développé pour remplacer le système de stockage de configuration Gconf, qui était utilisé dans les anciennes versions de GNOME. Le système de stockage de configuration Dconf a été conçu pour être plus rapide et plus efficace que Gconf. sudo dnf install dconf-editor Résultat Exemple : modifier le taille du curseur\n org > gnome > desktop > interface\n modifier la valeur cursor-size\n \nExemple : afficher la date et les secondes dans la barre des taches\n org > gnome > desktop > interface\n modifier les valeurs clock-show-date et clock-show-seconds"},{"uuid":"bea327e2-9d1c-4ff6-a5a5-26748c80018b","slug":"anatomie-d-un-script-d-auto-deploiement-bash-fetch-scripts-sh","title":"Script Bash d'auto-déploiement : `fetch_scripts.sh`","category":"informatique","author":"cedric@abonnel.fr","cover":"cover.svg","published":true,"published_at":"2026-05-04 07:04","created_at":"2026-05-12 10:55:39","updated_at":"2026-05-12 11:10:51","tags":[],"plain":"Comment un simple script Bash peut télécharger, mettre à jour et synchroniser une bibliothèque de scripts distants — et pourquoi il faut le lire avec un œil critique.\r\n\r\nfetchscripts.sh\r\n📝 Note — Cet article est une autocritique. Le script analysé ici est de ma propre fabrication, déployé sur mes propres machines. L'exercice consiste à le relire avec la distance d'un reviewer extérieur, pour identifier ce qui tient la route et ce qui mériterait d'être repris.\r\n\r\nLe contexte\r\n\r\nL'idée derrière ce script est élégante : centraliser une collection de scripts utilitaires dans un dépôt Git public (ici, une instance Forgejo auto-hébergée), puis fournir un unique point d'entrée que l'on télécharge sur n'importe quelle machine. Ce point d'entrée se met à jour tout seul, propose à l'opérateur de choisir quels sous-ensembles de scripts récupérer, et maintient une synchronisation locale du dépôt distant.\r\n\r\nC'est typiquement le genre d'outil qui se déploie en une ligne :\r\n\r\n\r\n\r\nDécortiquons ce qu'il fait, étape par étape, puis voyons où il faudrait taper.\r\n--\r\n\r\nÉtape 1 — L'auto-mise à jour\r\n\r\n\r\n\r\nCe qui se passe : le script télécharge sa propre version distante dans , la compare octet-à-octet avec lui-même (), et si elle diffère, il s'écrase, se rend exécutable, et se relance via (qui remplace le processus courant — pas d'empilement de shells).\r\n\r\nPourquoi c'est malin : ça garantit qu'à chaque exécution, l'opérateur travaille avec la version canonique du dépôt. Pas besoin de mécanisme de versioning, pas de vérification de hash, pas de paquet à publier.\r\n\r\nPourquoi c'est risqué : on y reviendra dans la critique, mais en résumé — l'auto-mise à jour silencieuse depuis une URL en HTTPS sans signature est une porte d'entrée pour la chaîne d'approvisionnement.\r\n--\r\n\r\nÉtape 2 — Récupération du catalogue de dossiers\r\n\r\n\r\n\r\nLe dépôt distant contient un fichier qui liste les catégories de scripts disponibles (par exemple : , , , …). Ce fichier est la source de vérité : ajouter une catégorie côté serveur la rend immédiatement disponible côté client.\r\n\r\n (alias ) lit le fichier ligne à ligne dans un tableau Bash. Plus propre qu'une boucle .\r\n\r\nUn dossier est marqué comme obligatoire — il sera toujours téléchargé, sans demander à l'utilisateur.\r\n--\r\n\r\nÉtape 3 — Mémoire de la sélection précédente\r\n\r\n\r\n\r\nÀ chaque exécution, le script relit la sélection de la fois précédente. C'est ce qui permet à l'interface graphique (étape suivante) de pré-cocher les bons dossiers : on n'a pas à refaire son choix à chaque mise à jour.\r\n--\r\n\r\nÉtape 4 — L'interface \r\n\r\n\r\n\r\n est l'outil de dialogue ncurses standard sur Debian/Ubuntu — il affiche cette boîte bleue familière avec des cases à cocher, navigable au clavier. Idéal en SSH.\r\n\r\nLa gymnastique est un classique : écrit son interface sur stdout et sa réponse sur stderr. Il faut donc échanger les deux pour capturer la sélection dans tout en laissant l'interface s'afficher.\r\n\r\nL'expression est une astuce courante pour tester l'appartenance à un tableau Bash — on entoure d'espaces pour éviter les correspondances partielles ( qui matcherait ).\r\n--\r\n\r\nÉtape 5 — Synchronisation : ajouts et suppressions\r\n\r\n\r\n\r\nLogique de diff : tout ce qui était sélectionné avant et ne l'est plus est supprimé du disque. Ça maintient le répertoire local propre — pas de scripts orphelins qui traînent.\r\n\r\n renvoie la sélection sous forme de chaîne entre guillemets (), d'où le pour les retirer avant de constituer le tableau.\r\n--\r\n\r\nÉtape 6 — Téléchargement des fichiers de chaque dossier\r\n\r\n\r\n\r\nMême logique récursive d'un niveau plus bas : chaque dossier contient son propre listant ses fichiers. On télécharge ceux qui y figurent, on supprime ceux qui n'y figurent plus, et on rend tout exécutable.\r\n\r\nC'est une forme de artisanal, basé sur des manifestes plats. Ça fonctionne sans avoir à installer sur la machine cible — seuls et sont requis.\r\n--\r\n\r\nCritique : ce qui marche, ce qui inquiète\r\n\r\nLes bons côtés\r\n\r\nLa logique d'idempotence est solide. Le script peut tourner cent fois de suite, il convergera toujours vers le même état : les dossiers sélectionnés contiendront exactement les fichiers du manifeste, ni plus, ni moins. C'est le bon réflexe DevOps.\r\n\r\nL'auto-bootstrap est ergonomique. Une seule URL à retenir, tout le reste se télécharge tout seul. Pour une bibliothèque personnelle de scripts d'admin, c'est imbattable en simplicité.\r\n\r\nPas de dépendances exotiques. , , : tout est disponible nativement sur Debian. Le script tourne aussi bien sur un conteneur LXC fraîchement provisionné que sur une machine établie.\r\n\r\nLe manifeste séparé ( et ) découple la liste des fichiers de leur contenu. C'est plus simple qu'un parsing HTML de l'index Git, et ça reste sous contrôle éditorial.\r\n\r\nLes angles morts\r\n\r\n1. Aucune vérification d'intégrité\r\n\r\nC'est le point critique. Le script télécharge du code exécutable en HTTPS, sans vérifier :\r\nni signature GPG,\r\nni hash SHA256,\r\nni même que le serveur a bien répondu correctement.\r\n\r\n en mode silencieux n'échoue pas visiblement : si la requête renvoie une page d'erreur 404 ou une page de connexion captive Wi-Fi en HTML, elle sera écrite dans le fichier de destination. La vérification suivante () considérera ce HTML comme « différent », fera le , et au prochain le shell essaiera d'exécuter du HTML. Au mieux ça crashe, au pire ça exécute des balises interprétables.\r\n\r\nPire encore pour l'auto-update : si quelqu'un compromet l'instance Forgejo (ou interpose un proxy malveillant capable de servir un certificat valide pour ), le prochain télécharge et exécute du code arbitraire avec les privilèges de l'utilisateur courant — souvent root pour ce genre d'outils d'admin.\r\n\r\nCorrectif minimal : publier un fichier signé GPG dans le dépôt, le télécharger, vérifier sa signature avec une clé connue localement, puis valider chaque fichier téléchargé contre ce manifeste.\r\n\r\n2. sans gestion d'erreur\r\n\r\n\r\n\r\nSi échoue (réseau coupé, DNS HS, certificat expiré), sera soit vide soit absent. retournera « différent », et le script écrasera la version locale par un fichier vide. À la prochaine exécution, plus rien ne fonctionne.\r\n\r\nCorrectif : vérifier le code de retour de , vérifier que le fichier téléchargé n'est pas vide, et vérifier qu'il commence bien par avant d'écraser quoi que ce soit.\r\n\r\n\r\n\r\n3. Le perd les modifications de l'environnement\r\n\r\nSi le script a été lancé par (donc sans le bit exécutable, sans shebang utilisé), vaut . Après , on un fichier qui pourrait ne pas être dans le . En pratique ça marche parce qu'on est dans le bon répertoire, mais c'est fragile — un quelque part dans le script suffirait à le casser.\r\n\r\n4. Injection via les noms de fichiers du manifeste\r\n\r\n\r\n\r\nLe contenu de est utilisé directement dans une URL et dans un chemin de fichier local. Si quelqu'un peut écrire dans ce fichier manifeste (ce qui revient à pouvoir pousser sur le dépôt Forgejo), il peut y mettre des chemins comme et écrire en dehors du répertoire prévu.\r\n\r\n neutralise partiellement la chose côté nom local, mais l'URL côté distant accepte n'importe quoi. C'est moins critique que la première faille, mais ça mérite un filtre regex ( uniquement).\r\n\r\n5. et la sélection vide\r\n\r\nSi l'utilisateur ne coche rien et valide, est vide. Le script continue avec seulement , ce qui est probablement le comportement attendu. Mais si n'est pas installé (rare mais possible, par exemple sur Alpine ou un Debian minimal sans ), le script échoue avec une erreur peu explicite. Un test préalable éviterait la déconvenue.\r\n\r\n6. Pas de log, pas de mode dry-run\r\n\r\nPour un outil qui supprime des fichiers (), l'absence d'option qui afficherait ce qui serait fait sans rien toucher est gênante. Une frappe distraite sur la checklist, et un dossier entier disparaît sans warning.\r\n\r\n7. Le verrou manquant\r\n\r\nRien n'empêche deux instances de de tourner en parallèle (par exemple via et un opérateur en interactif). Un sur un fichier de lock éviterait des courses sur les opérations de download/delete.\r\n--\r\n\r\nVerdict\r\n\r\nC'est un script utile, lisible, et bien construit pour un usage personnel sur des machines de confiance. La logique de synchronisation est saine, l'ergonomie est appréciable, l'auto-bootstrap est élégant.\r\n\r\nMais dès qu'on franchit la frontière du « j'utilise ça sur mes propres machines avec mon propre dépôt », les manques se font sentir : pas de vérification d'intégrité, pas de gestion d'erreur réseau, pas d'option de récupération. Dans un contexte d'équipe ou de production, ces points sont bloquants.\r\n\r\nPistes d'évolution prioritaires\r\n\r\n1. Signature ou checksum : publier un signé GPG, le vérifier avant tout ou exécution.\r\n2. en tête de script pour faire échouer proprement à la première erreur.\r\n3. Vérifier : code de retour, fichier non vide, shebang présent.\r\n4. Backup avant écrasement : conserver la version précédente () pour pouvoir revenir en arrière.\r\n5. Option pour visualiser sans appliquer.\r\n6. Filtre regex sur les noms de fichiers du manifeste pour éviter les traversées de chemin.\r\n7. Lock file** via pour éviter les exécutions concurrentes.\r\n\r\nAvec ces ajouts, on passe d'un script « pratique » à un outil de déploiement digne de ce nom — sans rien perdre de sa simplicité initiale."},{"uuid":"75d46d88-ab6f-4b5e-a229-e4b32c4d8527","slug":"changer-de-reseau-wi-fi-sur-un-raspberry-pi-en-toute-simplicite","title":"Changer de réseau Wi-Fi sur un Raspberry Pi en toute simplicité","category":"Informatique","author":"cedric@abonnel.fr","cover":"","published":true,"published_at":"2024-04-15 07:01:50","created_at":"2024-04-15 07:01:50","updated_at":"2024-04-15 07:01:50","tags":[],"plain":"Pour mettre à jour les paramètres de votre réseau Wi-Fi, modifier le fichier Le fichier de configuration peut ressembler à ceci : Après avoir modifié le fichier sur votre Raspberry Pi, vous devez effectuer quelques étapes supplémentaires pour que les modifications prennent effet : 1. Arrêtez le service wpasupplicant en utilisant la commande suivante dans le terminal : 2. Relevez tous les PID de tous les process avec le nom wpasupplicant qui devront être tué par le commande : 3. Supprimez le fichier de l'interface de contrôle Redémarrez le service de réseau afin de reconnaître les nouveaux paramètres Wi-Fi : Après avoir effectué ces étapes, votre Raspberry Pi devrait se connecter à votre réseau Wi-Fi avec les nouveaux paramètres que vous avez configurés dans le fichier wpasupplicant.conf**."},{"uuid":"ff14fded-e1fc-4a68-9742-e6ffd72d6c72","slug":"le-wifi-du-raspberry-pi","title":"Le Wi-Fi du Raspberry Pi","category":"Informatique","author":"cedric@abonnel.fr","cover":"","published":true,"published_at":"2024-04-14 21:14:11","created_at":"2024-04-14 21:14:11","updated_at":"2024-04-14 21:14:11","tags":[],"plain":"L'une des fonctionnalités intéressantes du Raspberry Pi est la capacité à se connecter à un réseau Wi-Fi pour accéder à internet et communiquer avec d'autres appareils sur le réseau. Le Wi-Fi du Raspberry Pi fonctionne généralement bien, mais il peut parfois y avoir des problèmes de connexion, notamment en raison de problèmes de compatibilité avec certains adaptateurs Wi-Fi USB. Dans ces cas-là, il peut être nécessaire de rechercher des solutions spécifiques à votre configuration matérielle pour résoudre les problèmes de connexion."},{"uuid":"fafb0d74-058f-4d5e-ace4-213ddb0cf0d7","slug":"scanner-les-reseaux-wifi-disponibles-avec-un-raspberry-pi","title":"Scanner les réseaux Wi-fi disponibles avec un Raspberry Pi","category":"Informatique","author":"cedric@abonnel.fr","cover":"","published":true,"published_at":"2024-04-14 21:12:45","created_at":"2024-04-14 21:12:45","updated_at":"2024-04-14 21:12:45","tags":[],"plain":"Pour scanner les réseaux Wi-Fi disponibles à proximité de votre Raspberry Pi, vous pouvez utiliser plusieurs méthodes, notamment en utilisant des commandes en ligne de commande. Voici quelques-unes des commandes les plus couramment utilisées : 1. Utilisation de la commande :\n Cette commande va scanner les réseaux Wi-Fi disponibles et afficher des informations détaillées sur chacun d'eux, y compris le SSID, le niveau de signal, le canal, le mode de sécurité, etc. 2. Utilisation de la commande : Cette commande va également scanner les réseaux Wi-Fi disponibles et afficher des informations similaires à ."}] |