This commit is contained in:
Tenzing Kandang 2026-01-15 16:42:51 +01:00
parent b1918d5154
commit ffffe65ce3
5 changed files with 172 additions and 18 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
*.file
*.cmd
gbvenv

22
app.py Normal file
View File

@ -0,0 +1,22 @@
from fastapi import FastAPI, Request, HTTPException
import json
app = FastAPI()
@app.post("/endpoint")
async def receive_info(request: Request):
# Lire le body brut
body = await request.body()
print(body)
# Parser le JSON
try:
data = json.loads(body)
except json.JSONDecodeError:
raise HTTPException(status_code=400, detail="Invalid JSON")
# Debug
print("Infos reçues :", data)
return ({"status": "ok"})

View File

@ -15,6 +15,92 @@ SUM="$DIR/summary.txt"
#inxi > $DIR/inxi.cmd
#lsmem > $DIR/lsmem.cmd
HOSTNAME=$(hostname)
CPU=$(lscpu | grep 'Nom de modèle' | awk -F: '{print $2}' | xargs)
MEM=$(free -m | awk '/Mem:/ {print $2}')
OS=$(lsb_release -a |grep Description |cut -f2)
CPU_ID=$(sudo dmidecode -t processor |grep ID |cut -d: -f2)
RAM_SIZE=$(lsmem |grep "Mémoire partagée" |cut -d: -f2 |sed 's/\ //g')
RAM_GEN=$(sudo dmidecode -t memory |grep Type: |grep -v Unknown |tail -n1 |cut -d: -f2 |sed 's/\ //')
SIZES=$(lsblk -dnb | grep -v loop | grep -v boot | tr -s " " | cut -d' ' -f4)
MB_SERIAL=$(sudo dmidecode | grep -A 4 "Base Board" | tail -n1 | cut -d: -f2 | sed 's/\ //')
CPU_FREQUENCY_MIN=$(lscpu | grep MHz | cut -d: -f2 | sed -n '3p' | tr -s " " | sed 's/\ //' | cut -d, -f1)
CPU_FREQUENCY_CUR=$(sudo dmidecode | grep "MHz" | cut -d: -f2 | sed -n '3p' | sed 's/\ //')
CPU_FREQUENCY_MAX=$(sudo dmidecode | grep "MHz" | cut -d: -f2 | sed -n '2p' | sed 's/\ //')
GPU_MODEL=$(inxi | grep -o 'Radeon [^ ]* Graphics')
CHASSIS_SERIAL=$(sudo dmidecode | grep -A 5 "Chassis" | tail -n1 | cut -d: -f2 | sed 's/\ //')
CPU_CORES_NUMBER=$(inxi | grep core | cut -d' ' -f2 | sed 's/-core//')
CPU_THREADS_NUMBER=$(nproc)
RAM_NUMBER=$(sudo dmidecode --type memory | grep 'Rank' | wc -l)
RAM_SLOTS_NUMBER=$(sudo dmidecode --type memory | grep "Number Of Devices" | cut -d: -f2 | sed 's/\ //')
ARCH=$(uname -m)
DESKTOP=$XDG_CURRENT_DESKTOP
WM=$XDG_SESSION_TYPE
KERNEL=$(uname -r)
##########SIMPLELOCAL####################
# Construire le JSON
json_data=$(jq -n \
--arg host "$HOSTNAME" \
--arg cpu "$CPU" \
--arg cpu_id "$CPU_ID" \
--arg mem "$MEM" \
--arg ram_size "$RAM_SIZE" \
--arg ram_gen "$RAM_GEN" \
--arg sizes "$SIZES" \
--arg mb_serial "$MB_SERIAL" \
--arg cpu_freq_min "$CPU_FREQUENCY_MIN" \
--arg cpu_freq_cur "$CPU_FREQUENCY_CUR" \
--arg cpu_freq_max "$CPU_FREQUENCY_MAX" \
--arg gpu_model "$GPU_MODEL" \
--arg chassis_serial "$CHASSIS_SERIAL" \
--arg cpu_cores_nb "$CPU_CORES_NUMBER" \
--arg cpu_threads_nb "$CPU_THREADS_NUMBER" \
--arg ram_number "$RAM_NUMBER" \
--arg ram_slots_nb "$RAM_SLOTS_NUMBER" \
--arg os "$OS" \
--arg arch "$ARCH" \
--arg desktop "$DESKTOP" \
--arg wm "$WM" \
--arg kernel "$KERNEL" \
'{
HARDWARE: {
hostname:$host,
cpu:$cpu,
cpu_id:$cpu_id,
memory_mb:$mem,
ram_size:$ram_size,
ram_gen: $ram_gen,
sizes:$sizes,
mb_serial:$mb_serial,
cpu_freq_min:$cpu_freq_min,
cpu_freq_cur:$cpu_freq_cur,
cpu_freq_max:$cpu_freq_max,
gpu_model:$gpu_model,
chassis_serial:$chassis_serial,
cpu_cores_nb:$cpu_cores_nb,
cpu_threads_nb:$cpu_threads_nb,
ram_number:$ram_number,
ram_slots_nb:$ram_slots_nb
},
SOFTWARE: {
os:$os,
arch:$arch,
desktop:$desktop,
wm:$wm,
kernel:$kernel
}
}')
echo $json_data
curl -X POST http://localhost:8000/endpoint \
-H "Content-Type: application/json" \
-d "$json_data"
########################################
# Affichage du texte de démarrage
@ -45,7 +131,7 @@ COMMANDES=(
[lsusb.cmd]="lsusb"
[apt.cmd]="apt list --installed"
[systemd-analyze.cmd]="systemd-analyze"
[systemd-blame.cmd]="systemd-analyze blame | head -n 10"
[systemd-blame.cmd]="systemd-analyze blame"
[lscpu.cmd]="lscpu"
[inxi.cmd]="inxi"
[lsmem.cmd]="lsmem"
@ -98,13 +184,22 @@ echo "values: ${PARTITIONS_BY_DISK[@]}"
hardware() {
echo " "
echo "[HARDWARE]"
echo "CPU=$(lscpu -eMODELNAME |tail -n1)"
echo "CPU_ID=$(sudo dmidecode -t processor |grep ID |cut -d: -f2)"
RAM_SIZE=$(lsmem |grep "Mémoire partagée" |cut -d: -f2 |sed 's/\ //g')
RAM_GEN=$(sudo dmidecode -t memory |grep Type: |grep -v Unknown |tail -n1 |cut -d: -f2 |sed 's/\ //')
echo "CPU=$CPU"
echo "CPU_ID=$CPU_ID"
echo "RAM=$RAM_SIZE $RAM_GEN"
echo "RAM_SIZE=$RAM_SIZE"
echo "RAM_GEN=$RAM_GEN"
echo "SIZES=$SIZES"
echo "MB_SERIAL=$MB_SERIAL"
echo "CPU_FREQUENCY_MIN=$CPU_FREQUENCY_MIN"
echo "CPU_FREQUENCY_CUR=$CPU_FREQUENCY_CUR"
echo "CPU_FREQUENCY_MAX=$CPU_FREQUENCY_MAX"
echo "GPU_MODEL=$GPU_MODEL"
echo "CHASSIS_SERIAL=$CHASSIS_SERIAL"
echo "CPU_CORES_NUMBER=$CPU_CORES_NUMBER"
echo "CPU_THREADS_NUMBER=$CPU_THREADS_NUMBER"
echo "RAM_NUMBER=$RAM_NUMBER"
echo "RAM_SLOTS_NUMBER=$RAM_SLOTS_NUMBER"
sizes=$(lsblk -dnb |grep -v loop |grep -v boot |tr -s " " |cut -d \ -f4)
STOCKAGE_TOTAL=0
@ -131,3 +226,4 @@ software
echo " "
echo "Le fichier summary.txt contient les infos hardware et software du système"
echo "À bientôt ;)"

View File

@ -2,53 +2,78 @@
import configparser
import requests
class ordinateur():
cpu=" "
cpu_freq=" "
[...]
cpu_id=" "
cpu_serial=" "
ram=" "
ram_gen=" "
stockage_total=" "
cpu = ""
cpu_freq_min = ""
cpu_freq_cur = ""
cpu_freq_max = ""
cpu_id = ""
mb_serial = ""
ram = ""
ram_gen = ""
sizes = ""
gpu_model = ""
chassis_serial = ""
cpu_cores_nb = ""
cpu_threads_nb = ""
ram_number = ""
ram_slots_nb = ""
stockage_total = ""
os = ""
arch = ""
desktop = ""
wm = ""
kernel = ""
os=" "
arch=" "
desktop=" "
wm=" "
kernel=" "
def reload(self):
r = requests.get("http://localhost:8000/summary.txt")
r.raise_for_status()
print(type(r.content.decode("utf-8")))
sum=configparser.ConfigParser()
sum.read_string(r.content.decode("utf-8"))
#sum.read("/opt/grabber/summary.txt")
if "CPU" in sum['HARDWARE']:
self.cpu = sum['HARDWARE']['CPU']
if "CPU_SERIAL" in sum['HARDWARE']:
self.cpu_serial = sum['HARDWARE']['CPU_SERIAL']
if "CPU_FREQ" in sum['HARDWARE']:
self.cpu_freq = sum['HARDWARE']['CPU_FREQ']
if "CPU_ID" in sum['HARDWARE']:
self.cpu_id = sum['HARDWARE']['CPU_ID']
if "RAM" in sum['HARDWARE']:
self.ram = sum['HARDWARE']['RAM']
if "RAM_GEN" in sum['HARDWARE']:
self.ram_gen = sum['HARDWARE']['RAM_GEN']
if "STOCKAGE_TOTAL" in sum['HARDWARE']:
self.stockage_total = sum['HARDWARE']['STOCKAGE_TOTAL']
if "OS" in sum['SOFTWARE']:
self.os = sum['SOFTWARE']['OS']
if "ARCH" in sum['SOFTWARE']:
self.arch = sum['SOFTWARE']['ARCH']
if "DESKTOP" in sum['SOFTWARE']:
self.desktop = sum['SOFTWARE']['DESKTOP']
if "WM" in sum['SOFTWARE']:
self.wm = sum['SOFTWARE']['WM']
if "KERNEL" in sum['SOFTWARE']:
self.kernel = sum['SOFTWARE']['KERNEL']
def __init__(self):
self.reload()
def shutdown():
return

10
requirements.txt Normal file
View File

@ -0,0 +1,10 @@
annotated-doc==0.0.4
annotated-types==0.7.0
anyio==4.12.1
fastapi==0.128.0
idna==3.11
pydantic==2.12.5
pydantic_core==2.41.5
starlette==0.50.0
typing-inspection==0.4.2
typing_extensions==4.15.0