Skip to content

Script qui fais un inventaire d'un PC et envoie vers une BDD

Notifications You must be signed in to change notification settings

pitch2/Agent.py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Get-WmiObject -Class Win32_DiskDrive

Ici on liste toutes nos informations disponible (beaucoup)

Pour avoir un résultat intéressant on renvoie seulement ce dont l'on a besoin

Get-WmiObject -Class Win32_DiskDrive | Select-Object -Property Model -Unique | Format-Table -HideTableHeaders

Nous avons de la pollution avec des sauts de lignes... Donc ->

(((output.decode("utf-8").split("\r"))[1]).split("\n"))[1]

On crée notre table SQL pour prendre les données :

CREATE TABLE IF NOT EXISTS `Hardware` (

  `Hostname` varchar(255) NOT NULL,
  `CPU` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `GPU` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `RAM` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `BaseBoard` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `DiskDrive_Model` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `DiskDrive_Size` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `DiskDrive_State` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  PRIMARY KEY (`Hostname`)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `Network` (
  `Hostname` VARCHAR(255) NOT NULL,
  `Domain` VARCHAR(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `SerialNumber` VARCHAR(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `Bios_Releasedate` VARCHAR(255) COLLATE utf8mb4_bin DEFAULT NULL,
  PRIMARY KEY (`Hostname`)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `disk` (
  `Hostname` varchar(255) COLLATE utf8mb4_bin NOT NULL,
  `Remaining` int DEFAULT NULL,
  `Total_Size` int DEFAULT NULL,
  `Buzy_Size` int DEFAULT NULL,
  PRIMARY KEY (`Hostname`)
) ENGINE=InnoDB;

Nous avons donc ça comme résultat

Deux noms de PC ne peuvent pas être identique :

Sur un parc informatique c'est normalement basique

Faire une table pour partie réseau, hardware, organisation

  • Réseau
    • IP, MAC
  • Hardware
    • CPU
    • CM
    • GPU
    • RAM
    • Etat des disques
  • Organisation
    • Numéro de série
    • Date du BIOS

Pour hardware :

dico = {
    "Win32_Processor" : "Name",
    "Win32_PhysicalMemory" : "__PROPERTY_COUNT",
    "Win32_BaseBoard" : "Product",
    "Win32_DiskDrive" : "Model",
	"Win32_DiskDrive" : "Size",
	"Win32_DiskDrive" : "Status",
	"Win32_VideoController" : "VideoProcessor",
	"Win32_OperatingSystem" : "Caption"
}

Pour organisation :

dico = {
	"Win32_computersystem" : "Domain",
	"Win32_BIOS" : "SerialNumber",
	"Win32_BIOS" : "releasedate"
}

Pour calcul de disque exact :

commande = ["(Get-Volume -DriveLetter C | Select-Object -ExpandProperty SizeRemaining) / 1GB", "(Get-Volume -DriveLetter C | Select-Object -ExpandProperty Size) / 1GB"]

#Puis 0-1 pour avoir l'espace utilisé (attention on remet en Go, donc les capacités change par rapport au byte)

Versions :

  • V1. Base du code
  • V1.2. Ajout de l'agent network
  • V1.5. Optimisation par dictionnaire
  • V1.6. Ajout de l'agent disk
  • V1.7.Interface WEB, recherche par Hostname
  • V1.8.Calcul d'espace dispo -> visulisation par graph WEB

🛑 Une partie du code (partie Web a été corriger par Copilot)

About

Script qui fais un inventaire d'un PC et envoie vers une BDD

Topics

Resources

Stars

Watchers

Forks