L’article explique comment moderniser un script de sauvegarde obsolète en utilisant Codex via l’extension Remote SSH de VS Code, plutôt que de réécrire aveuglément le code. L’auteur, confronté à des changements d’infrastructure (migration Debian, conteneurs Docker disparus), a préféré auditer le script existant en temps réel sur le serveur, en s’appuyant sur l’IA pour vérifier la validité des chemins, des commandes et des ressources (conteneurs, volumes, espace disque). Cette approche interactive permet de confronter les hypothèses du code à la réalité du serveur, évitant ainsi des erreurs liées à des hypothèses erronées.
L’outil Remote SSH de VS Code joue un rôle clé en transformant le serveur distant en espace de travail direct, où Codex peut analyser les fichiers et exécuter des commandes dans le contexte réel. L’auteur souligne l’importance de ne pas laisser l’IA agir sans contrôle, notamment en matière de privilèges : Codex propose des commandes en lecture seule et demande explicitement l’autorisation avant toute opération sensible, garantissant ainsi une supervision humaine constante.
Le processus a révélé des incohérences majeures dans le script, comme des chemins de sauvegarde inexistants ou des conteneurs Docker disparus, prouvant l’utilité de cette méthode. En combinant audit interactif et vérification immédiate, l’auteur évite une refonte hasardeuse et s’assure que la nouvelle version du script correspond à l’état actuel du serveur.
L’article met en garde contre la pratique dangereuse curl | bash, souvent présentée comme une méthode d’installation simple, notamment dans des documentations officielles. Cette méthode, qui consiste à télécharger et exécuter directement un script depuis Internet, expose à des risques de sécurité majeurs. En effet, le script exécuté peut différer de celui consulté, car le serveur peut adapter sa réponse en fonction du contexte (navigateur, curl, adresse IP, etc.), exploitant ainsi les particularités du pipeline Unix où bash commence à exécuter le script avant même qu’il ne soit entièrement téléchargé.
L’auteur souligne que même l’utilisation de HTTPS ne protège pas contre cette menace, car il garantit uniquement l’intégrité du transport et l’authenticité du serveur, mais pas l’honnêteté du contenu servi. Un serveur malveillant peut ainsi fournir un script inoffensif lors d’une visualisation directe, tout en injectant un code malicieux lors d’une exécution via curl | bash. Des techniques comme la détection du comportement typique d’un pipeline (par exemple, en insérant une commande lente comme sleep) permettent à un serveur de distinguer une exécution directe d’une exécution via curl | bash, renforçant ainsi le risque d’exécution de code non désiré.
Ploum partage son expérience autour du jeu Le comte et la communiste, un jeu en AsciiArt où l’on incarne une espionne/servante dans un château pendant la Première Guerre mondiale. Le jeu intègre un message codé en Baudot, un ancien système de télégraphie, qu’il décide de décoder via la ligne de commande Linux. Après avoir expliqué sa méthode artisanale et efficace (utilisant cut, tr, paste, et sed), il compare son approche avec celle de ChatGPT. Malgré plusieurs tentatives, ChatGPT produit un script complexe, peu robuste et finalement incorrect, illustrant les limites de l’IA pour des tâches précises nécessitant une expertise technique. Ploum souligne l’élégance et l’efficacité des outils Unix, ainsi que l’importance de la réflexion personnelle face à l’automatisation aveugle. Une réflexion sur l’autonomie technique et la dépendance aux outils d’IA, le tout agrémenté d’une touche d’humour et d’une recommandation pour le livre Efficient Linux at the Command Line.
Ce tutoriel explique comment signaler les IP malveillantes détectées par Cloudflare à AbuseIPDB en utilisant un script Python. L'auteur décrit comment récupérer les données du pare-feu Cloudflare via une API GraphQL, analyser les événements par adresse IP, vérifier leur statut sur AbuseIPDB et les signaler. Le script, d'environ 700 lignes, utilise GitHub Copilot et nécessite des tokens API pour Cloudflare et AbuseIPDB. Il permet de générer des rapports d'analyse et de dénoncer automatiquement les IP malveillantes.
L'article explique comment organiser efficacement votre code pour améliorer la lisibilité et la maintenabilité. Il couvre l'utilisation de lignes shebang pour rendre les scripts exécutables, l'organisation des instructions d'importation selon les conventions PEP 8, et la création de points d'entrée principaux avec des blocs if name == "main". L'article aborde également la gestion des dépendances avec PEP 723, la manipulation des arguments en ligne de commande avec des bibliothèques comme Click, et l'amélioration de la structure interne des données avec des énumérations et des dataclasses. Enfin, il propose des conseils pour améliorer les retours des scripts, comme l'utilisation de bibliothèques telles que Rich pour une meilleure présentation des sorties.
L'article explique comment automatiser l'exécution de scripts à l'ouverture d'un projet dans Visual Studio Code (VSCode) en utilisant un fichier de configuration JSON. En créant un fichier .vscode/tasks.json, vous pouvez définir des tâches réutilisables qui seront exécutées automatiquement lors de l'ouverture du dossier du projet. Par exemple, pour un projet avec des dossiers backend et frontend, vous pouvez configurer des tâches pour lancer des commandes spécifiques dans chaque dossier et ouvrir des terminaux dédiés. Le fichier peut être partagé avec d'autres développeurs via un dépôt Git, facilitant ainsi la collaboration. L'article fournit des exemples de configuration pour lancer des commandes et ouvrir des terminaux libres, et souligne l'importance de tester ces configurations pour s'assurer de leur bon fonctionnement.
Tout est dans le titre
L'auteur explique à quoi servent les attributs integrity et crossorigin dans
<script src="https://unpkg.com/react@18/umd/react.production.min.js"
integrity="sha384-tMH8h3BGESGckSAVGZ82T9n90ztNXxvdwvdM6UoR56cYcf+0iGXBliJ29D+wZ/x8"
crossorigin="anonymous">Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre