From 4b2594a7387b5108af7a63d68da72af0b4422a05 Mon Sep 17 00:00:00 2001 From: ramzouillee <48603083+buchtioof@users.noreply.github.com> Date: Sat, 21 Feb 2026 14:50:45 +0100 Subject: [PATCH] update grabber doc --- docs/projects/2025-12-05.md | 22 +++--- site/learn/python/2026-01-16/index.html | 4 +- site/projects/2025-12-05/index.html | 97 +++++++++++++++++-------- site/search.json | 2 +- 4 files changed, 77 insertions(+), 48 deletions(-) diff --git a/docs/projects/2025-12-05.md b/docs/projects/2025-12-05.md index 44dd9e9..2ef5c43 100644 --- a/docs/projects/2025-12-05.md +++ b/docs/projects/2025-12-05.md @@ -16,7 +16,7 @@ Grabber part d'un besoin de gérer un petit parc informatique (dizaines d'ordina ### Solution -Grabber donc serait dans l'idée capable de répondre à ces besoins, via une interface web administrateur consultable par le DSI d'une entreprise par exemple. Pour la gestion d'un parc informatique de petite taille/toute petite, on proposera un produit simple, léger et plug and play. Via une simple commande de terminal et une configuration au préalable des ordinateurs cibles capable de recevoir des requêtes SSH, Grabber sera capable de couvrir un maximum des besoins. +Grabber donc serait dans l'idée capable de répondre à ces besoins, via une interface web administrateur consultable par la DSI d'une entreprise par exemple. Pour la gestion d'un parc informatique de petite taille/toute petite, on proposera un produit simple, léger et plug and play. Via une simple commande de terminal et une configuration au préalable des ordinateurs cibles capable de recevoir des requêtes SSH, Grabber sera capable de couvrir un maximum des besoins. ## Choix de la stack technologique @@ -74,13 +74,15 @@ Son rôle est de fetch les données de la cible dont on a besoin pour répondre -> Le tout est codé dans un paquet .run qui contient les librairies requises comme jq et inxi pour être utilisable sur un maximum d'ordinateurs Linux (compilé avec makeself) -### Déploiement d'Alfred +### Cerveau serveur : API via Django + +#### Déploiement d'Alfred Pour déployer Alfred sur une machine, on utilisera SSH pour envoyer le script dans un PC cible. On veut que cette tâche soit lancée directement depuis le panel Admin. Pour se faire, on délègue celle-ci à Python avec Django qui l'effectuera avec un formulaire qui contient l'IP sur laquelle aller, le username et le mot de passe du SSH cible. -#### Requête avec Paramiko +##### Requête avec Paramiko C'est la solution trouvée pour gérer cette demande, Paramiko est une librairie Python installable avec pip qui peut établir la session SSH et le fera depuis le backend Django (dans views.py -> fonction deploy_ssh) @@ -95,7 +97,7 @@ Le cycle de la requête est le suivant : -> Nettoyage des traces (rm /tmp/alfred.run). -### Protection de l'API avec un "Secret Partagé" +#### Protection de l'API avec un "Secret Partagé" Comme dit plus tôt, grabber.sh génère un token de session (SESSION_TOKEN avec la commande "openssl rand") à chaque lancement de grabber.sh, puis ce token est stockée dans settings.json pendant la session et se reset à la fermeture de la session (commande trap qui lance la fonction cleanup). @@ -103,20 +105,14 @@ Ce token lui est stocké dans une variable Python depuis les settings.py qui se Enfin, lorsqu'une requête par Alfred est émise, Django vérifie cette clé d'abord dans api.py. Il fetch la clé dans la requête curl et la range dans une variable *key* puis teste si le token est correspondant à celui dans les settings.json. Si c'est bon, tout va bien, sinon il indique l'erreur avec la clé. -### Panel Admin (Django) +##### Panel Admin (Django) Enfin, le Panel Admin. Fonctionne avec Django, il part du modèle de données (models.py) et présente dans une interface HTML/CSS/JS la table SystemInfo avec l'adresse MAC comme clé principale pour chaque PC. Le tout est sécurisé avec le login admin de Django. -## Vue d'ensemble du projet et Conclusions +## Vue d'ensemble du projet et Conclusions (Projet à finir avant) ### Difficultés rencontrées et apprentissages ### Bilan -### Axes d'amélioration - -Passer le déploiement SSH sur un système de clés asymétriques (Clés Publiques/Privées) plutôt que par mot de passe. - -Déploiement du serveur maître via Docker pour une approche 100% "Release". - -Ajout d'un historique de l'état (ex: voir si un PC est hors ligne depuis X jours). \ No newline at end of file +### Axes d'amélioration \ No newline at end of file diff --git a/site/learn/python/2026-01-16/index.html b/site/learn/python/2026-01-16/index.html index 9034e13..450f093 100644 --- a/site/learn/python/2026-01-16/index.html +++ b/site/learn/python/2026-01-16/index.html @@ -758,7 +758,7 @@ - pip et environnements virtuels pour les quoicoubenks (16/01/26) + pip et environnements virtuels (16/01/26) @@ -776,7 +776,7 @@ - pip et environnements virtuels pour les quoicoubenks (16/01/26) + pip et environnements virtuels (16/01/26) diff --git a/site/projects/2025-12-05/index.html b/site/projects/2025-12-05/index.html index 82a00f3..3d266a8 100644 --- a/site/projects/2025-12-05/index.html +++ b/site/projects/2025-12-05/index.html @@ -1041,6 +1041,18 @@ +
  • + + + + Cerveau serveur : API via Django + + + + + + +
  • + + + +
  • - + - Vue d'ensemble du projet et Conclusions + Vue d'ensemble du projet et Conclusions (Projet à finir avant) -
  • - + - Vue d'ensemble du projet et Conclusions + Vue d'ensemble du projet et Conclusions (Projet à finir avant) -