{"id":29831978,"url":"https://github.com/stephrobert/python-training","last_synced_at":"2025-07-29T11:12:48.147Z","repository":{"id":303369635,"uuid":"1015240808","full_name":"stephrobert/python-training","owner":"stephrobert","description":"Une formation Python pour les Admin Sys","archived":false,"fork":false,"pushed_at":"2025-07-20T10:26:28.000Z","size":51,"stargazers_count":19,"open_issues_count":0,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-20T11:25:30.132Z","etag":null,"topics":["formation","learning","python","python3"],"latest_commit_sha":null,"homepage":"https://blog.stephane-robert.info/docs/developper/programmation/python/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-sa-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stephrobert.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"contributing.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"ko_fi":"stephanerobert89902"}},"created_at":"2025-07-07T08:00:25.000Z","updated_at":"2025-07-20T10:26:31.000Z","dependencies_parsed_at":"2025-07-07T09:24:21.908Z","dependency_job_id":"d9d5aae4-7826-4c37-a8ea-668437deda37","html_url":"https://github.com/stephrobert/python-training","commit_stats":null,"previous_names":["stephrobert/python-training"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stephrobert/python-training","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephrobert%2Fpython-training","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephrobert%2Fpython-training/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephrobert%2Fpython-training/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephrobert%2Fpython-training/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stephrobert","download_url":"https://codeload.github.com/stephrobert/python-training/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephrobert%2Fpython-training/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267677650,"owners_count":24126317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["formation","learning","python","python3"],"created_at":"2025-07-29T11:12:47.458Z","updated_at":"2025-07-29T11:12:48.139Z","avatar_url":"https://github.com/stephrobert.png","language":"Python","funding_links":["https://ko-fi.com/stephanerobert89902"],"categories":[],"sub_categories":[],"readme":"# Python SysAdmin Training\n\nBienvenue dans ce projet **Python SysAdmin Training** !\n\nCe dépôt propose un **parcours progressif et pratique** pour apprendre **Python\nà travers des cas concrets d’administration système**. Pas de théorie abstraite\nici : chaque TP vous met dans la peau d’un admin qui cherche à automatiser une\ntâche fastidieuse, surveiller un système, appeler une API ou générer un rapport.\n\nC’est un guide pour monter en compétences **par la pratique**, avec des exemples\nissus du quotidien des administrateurs systèmes.\n\n---\n\n## 🎯 Objectifs\n\n* 🐍 Apprendre les bases du langage Python dans un contexte sysadmin.\n* ⚙️ Automatiser des tâches à faible valeur ajoutée (nettoyage de fichiers,\n  surveillance, backup…).\n* 📈 Écrire des scripts robustes, testables et réutilisables.\n* 🌐 Interagir avec des APIs, manipuler des fichiers de configuration (YAML,\n  JSON), gérer des processus à distance.\n* 🧪 Tester automatiquement vos scripts avec `pytest` et `testinfra`.\n\n---\n\n## 📚 Structure du Projet\n\nLe projet est composé de deux parties :\n\n1. **formation-base** : Concepts fondamentaux de Python.\n2. **automatisation** : Exercices pratiques pour appliquer ces concepts dans un\n   contexte d’administration système.\n\n### Formation de base\n\n**TP Disponibles :**\n\n* [`00-Intro-Python`](./00-formation-base/00-Intro-Python) — Introduction à Python, syntaxe de base,\n  variables, types de données.\n* [`01-Structures-Collections`](./00-formation-base/01-Structures-Collections) — Structures de contrôle (if/else, boucles) et collections (listes, tuples, dictionnaires).\n* [`02-Fonctions`](./00-formation-base/02-Fonctions) — Création de fonctions, paramètres, valeurs\n  par défaut, lambdas, récursion.\n\n### Automatisation\n\n**TP Disponibles :**\n\n* [`01-Nmap`](./01-automatisation/01-Nmap) — Utilisation de Nmap pour scanner des réseaux.\n\n**Idées de TP** :\n\n* [`02-Backup`](./01-automatisation/01-Backup) — Script de sauvegarde de fichiers.\n* [`03-Log-Parser`](./01-automatisation/02-Log-Parser) — Analyse de fichiers log pour extraire des\n  informations pertinentes.\n* [`04-API-Client`](./01-automatisation/03-API-Client) — Client pour interagir avec une API REST\n  (par exemple, récupérer des données météo).\n* ...\n\n---\n\n## 🔧 Prérequis\n\n* Un environnement Linux ou Incus (containers LXD-compatible avec systemd).\n* Python 3.10 ou supérieur.\n* Les outils suivants installés :\n\n```bash\npipx install pytest\npipx inject pytest pytest-testinfra\n```\n\n\u003e Une configuration Incus est recommandée pour certains TP. Voir ci-dessous.\n\n---\n\n### Installation d'Incus (facultatif mais recommandé)\n\nPour isoler proprement chaque TP dans un conteneur Linux, tu peux utiliser\n**Incus**. Cf. guide complet d’installation ici :\n[https://blog.stephane-robert.info/docs/homelab/incus/](https://blog.stephane-robert.info/docs/homelab/incus/)\n\n---\n\n## 🚀 Démarrage rapide\n\n1. **Cloner le dépôt :**\n\n```bash\ngit clone https://github.com/stephrobert/python-training.git\ncd python-sysadmin-training\n```\n\n2. **Choisissez un TP et suivez les consignes dans le fichier `README.md` du\n   dossier correspondant.**\n3. **Les tests se lancent avec :**\n\n```bash\npytest tests/\n```\n\n\u003e Certains TP peuvent inclure des fichiers de simulation (`log.txt`,\n\u003e `users.csv`, etc.) dans un dossier `data/`.\n\n---\n\n## 🔄 Mise à jour du dépôt\n\nJe continuerai à enrichir ce dépôt avec de nouveaux TP, inspirés de cas réels,\net des corrections issues des retours de la communauté.\n\n```bash\ngit pull origin main\n```\n\n---\n\n## 🤝 Contribuer\n\nVous avez une idée de TP ? Un script utile à partager ? Une amélioration à\nproposer ?\n\n1. Ouvrez une **issue** pour discuter du sujet.\n2. Proposez une **pull request** avec un nouveau dossier TP complet :\n   `README.md`, `main.py`, `tests/`, `data/`.\n\n---\n\n## ☕ Me soutenir\n\nSi ce travail vous aide ou vous inspire, vous pouvez me soutenir ici :\n\n[![Ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/stephanerobert89902)\n\n---\n\n## 📄 Licence\n\n* **Auteur** : Stéphane Robert (2025)\n* **Licence** : [Creative Commons BY-SA\n  4.0](https://creativecommons.org/licenses/by-sa/4.0/)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephrobert%2Fpython-training","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstephrobert%2Fpython-training","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephrobert%2Fpython-training/lists"}