uvicorn
This commit is contained in:
parent
b1918d5154
commit
ffffe65ce3
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
*.file
|
||||
*.cmd
|
||||
gbvenv
|
||||
|
||||
22
app.py
Normal file
22
app.py
Normal 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"})
|
||||
106
grabber.sh
106
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 ;)"
|
||||
|
||||
|
||||
@ -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
10
requirements.txt
Normal 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
|
||||
Loading…
x
Reference in New Issue
Block a user