LSIT est un outil d'inventaire et de cartographie d'infrastructure système développé en Python. Il permet d'auditer rapidement une machine Linux, d'extraire ses métriques vitales et de générer un rapport structuré ou de visualiser les données via un tableau de bord web.
Ce projet met en pratique les concepts d'Infrastructure as Code (IaC) et de développement d'outils d'administration en ligne de commande (CLI).
- Auto-détection : Récupération du nom d'hôte, de la RAM totale et du modèle de CPU.
- Métriques Système : Collecte de l'espace disque (
df -h), du temps d'activité (Uptime) et de la charge système (Load Average). - Audit d'activité : Capture des processus actifs et cartographie de l'arborescence
/home/vagrant. - Audit de sécurité : Détection des ports réseau en écoute (
ss -tuln) et identification des utilisateurs avec privilèges sudo. - Tableau de bord web "Live" : Interface UI/UX moderne (thème Cybersec) avec rafraîchissement asynchrone (API REST / Fetch) en temps réel, propulsé par le micro-framework Flask (port 8080).
- Interopérabilité : Exportation des rapports au format texte brut (
.txt) ou structuré (.json). - Menu interactif SSH : Interface de navigation accessible directement depuis la session SSH.
- Horodatage & Version dynamique : Traçabilité de l'audit et lecture automatique de la version depuis le
CHANGELOG.md. - Automatisation Cron : Génération quotidienne automatique d'un rapport JSON à minuit.
Pour déployer le laboratoire d'environnement isolé, vous devez avoir installé sur votre machine hôte :
L'environnement est entièrement automatisé. L'outil s'installe globalement sur la machine cible lors du provisionnement.
-
Clonez ce dépôt :
git clone https://github.com/Deniz09OK/Linux-System-Inventory-Tool cd Linux-System-Inventory-Tool -
Démarrez l'infrastructure (Debian 12) :
vagrant up
-
Connectez-vous au serveur :
vagrant ssh
Le port
8080de la VM est automatiquement redirigé vers le port8081de la machine hôte.
Une fois connecté en SSH, le menu interactif se lance automatiquement. La commande lsit est également disponible globalement sur le système.
# Lancer le menu interactif (défaut)
lsit
# Générer directement un rapport texte
lsit --format txt
# Générer directement un rapport JSON structuré
lsit --format json
# Lancer directement le tableau de bord web sur le port 8080
lsit --serve
# Afficher la version
lsit -v===================================
LSIT v0.3.1 - 2026-03-26
===================================
1. Générer un rapport TXT
2. Générer un rapport JSON
3. Lancer le tableau de bord web
4. Retour au menu principal
===================================
Le tableau de bord web est accessible sur http://localhost:8080 après le lancement via lsit --serve ou l'option 3 du menu interactif.
L'interface a été conçue pour s'actualiser automatiquement et de manière asynchrone (sans rechargement de page) toutes les 5 secondes via une API interne. Elle affiche les informations suivantes :
| Section | Contenu |
|---|---|
| Machine | Nom d'hôte de la machine |
| Processeur | Modèle du CPU |
| Mémoire RAM | Quantité totale de RAM avec barre de progression |
| Sudoers | Utilisateurs avec privilèges sudo |
| Stockage | Espace disque disponible sur les partitions (df -h) |
| Uptime | Temps depuis le dernier démarrage |
| Charge Système | Load Average sur 1, 5 et 15 minutes |
| Ports réseau en écoute | Sortie de ss -tuln |
| Arborescence /home/vagrant | Structure des dossiers (2 niveaux) |
| Processus actifs | Sortie de ps aux |
L'endpoint /api/donnees retourne toutes les métriques au format JSON, permettant l'intégration avec d'autres outils de monitoring.
curl http://localhost:8081/api/donneesPour arrêter le serveur, tapez exit ou end dans le terminal.
Date de l'audit : 2026-03-26 10:30:00
La cible a été identifiée. Nom de la machine : debian-vm
Mémoire totale : MemTotal: 2048000 kB
Modèle du CPU : Intel(R) Core(TM) i7-...
===================================
PROCESSUS ACTIFS
===================================
...
===================================
ARBORESCENCE DOSSIERS
===================================
...
===================================
AUDIT DE SÉCURITÉ
===================================
Groupe Sudo : sudo:x:27:vagrant
Ports ouverts :
Netid State Local Address:Port ...
{
"date": "2026-03-26 10:30:00",
"machine": "debian-vm",
"ram": "MemTotal: 2048000 kB",
"cpu": "Intel(R) Core(TM) i7-...",
"uptime": "up 2 hours, 30 minutes",
"load_average": "0.01, 0.05, 0.00",
"stockage": "Filesystem Size Used Avail Use% Mounted on...",
"processus": "...",
"arborescence": "...",
"securite_ports": "Netid State Local Address:Port ...",
"securite_sudoers": "sudo:x:27:vagrant",
"version_lsit": "LSIT v0.5.0"
}Le projet utilise un workflow GitHub Actions (versionning.yml) pour gérer le versioning sémantique automatiquement à chaque push sur main.
| Préfixe de commit | Effet |
|---|---|
feat: / ✨ / 🚀 |
Bump mineur (x.Y.0) |
fix: / 🐛 / perf: / refactor: |
Bump patch (x.y.Z) |
BREAKING CHANGE / !: |
Bump majeur (X.0.0) |
docs: / autres |
Pas de bump |
Le workflow génère et commit automatiquement le CHANGELOG.md, puis crée et pousse le tag Git correspondant. Un mode dry-run est disponible via workflow_dispatch pour prévisualiser les changements sans les appliquer.
Linux-System-Inventory-Tool/
├── .github/
│ └── workflows/
│ └── versionning.yml # Workflow CI/CD de versioning sémantique
├── lsit.py # Script principal
├── Vagrantfile # Configuration de la VM Debian 12
├── CHANGELOG.md # Historique des versions
├── templates/
│ └── dashboard.html # Template du tableau de bord web (Jinja2/Flask)
├── static/
│ └── style.css # Styles du tableau de bord
└── .gitignore