From ffffe65ce380af58a86349a0dc543ffafacdf974 Mon Sep 17 00:00:00 2001 From: tenzi Date: Thu, 15 Jan 2026 16:42:51 +0100 Subject: [PATCH] uvicorn --- .gitignore | 1 + app.py | 22 ++++++++++ grabber.sh | 106 ++++++++++++++++++++++++++++++++++++++++++++--- ordinateur.py | 51 +++++++++++++++++------ requirements.txt | 10 +++++ 5 files changed, 172 insertions(+), 18 deletions(-) create mode 100644 app.py create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore index 1de5f2e..5778887 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.file *.cmd +gbvenv diff --git a/app.py b/app.py new file mode 100644 index 0000000..cab5979 --- /dev/null +++ b/app.py @@ -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"}) \ No newline at end of file diff --git a/grabber.sh b/grabber.sh index 781fd1c..09c78c3 100755 --- a/grabber.sh +++ b/grabber.sh @@ -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 ;)" + diff --git a/ordinateur.py b/ordinateur.py index c55cbbc..15e3b0b 100644 --- a/ordinateur.py +++ b/ordinateur.py @@ -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 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..eaf09c9 --- /dev/null +++ b/requirements.txt @@ -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