tuxflotte-installer/scripts/lib/hardware_collectors.sh
Thomas Stallinger 3739da37dc mint-image/hardware: Boot-Medium-Platte in gemeinsame lib ausgelagert
_mint_image_boot_medium_disk() aus backend.sh nach scripts/lib/boot_medium.sh
verschoben (tuxflotte_boot_medium_disk()) - build_storage_devices_json()
(hardware_collectors.sh) braucht dieselbe Ausschluss-Logik jetzt ebenfalls.

Nutzer-Feedback (01.09.2026, echter Hardware-Test): der Installations-
USB-Stick selbst tauchte in der Kundenplattform unter Flotte -> Aktionen ->
Hardware-Info -> Datenträger auf - fuer den Kunden irrefuehrend, da dieser
Datentraeger nach der Installation gar nicht mehr existiert. Gleiche
Ursache wie der parted-Bug (Commit fa54461): lsblk liefert das Boot-Medium
auf echter USB-Stick-Hardware als normalen TYPE="disk" zurueck.
2026-09-01 15:45:25 +02:00

74 lines
2.2 KiB
Bash

#!/usr/bin/env bash
get_cpu_model() {
awk -F: '
$1 ~ /^model name[[:space:]]*$/ {
value = $2
sub(/^[[:space:]]*/, "", value)
print value
exit
}
' /proc/cpuinfo
}
get_cpu_count() {
getconf _NPROCESSORS_ONLN
}
get_memory_bytes() {
awk '
$1 == "MemTotal:" {
print $2 * 1024
exit
}
' /proc/meminfo
}
# Live gefunden (01.09.2026, echter Hardware-Test): auf einem echten
# USB-Stick enumeriert das Boot-Medium selbst als normales "disk"-
# Blockgeraet (siehe tuxflotte_boot_medium_disk() in boot_medium.sh) - ohne
# Ausschluss tauchte der Installations-Stick selbst in der an den Server
# gemeldeten Datentraeger-Liste auf und war dort fuer den Kunden
# irrefuehrend sichtbar (Hardware-Info in der Kundenplattform).
build_storage_devices_json() {
local boot_medium_disk boot_medium_name
boot_medium_disk="$(tuxflotte_boot_medium_disk 2>/dev/null || true)"
boot_medium_name="${boot_medium_disk#/dev/}"
lsblk \
--bytes \
--json \
--nodeps \
--output NAME,TYPE,MODEL,SERIAL,SIZE,TRAN |
jq --arg exclude "${boot_medium_name}" '
[
.blockdevices[]
| select(.type == "disk")
| select($exclude == "" or .name != $exclude)
| {
name: .name,
model: (
if .model == null or .model == ""
then null
else (.model | gsub("^[[:space:]]+|[[:space:]]+$"; ""))
end
),
serial: (
if .serial == null or .serial == ""
then null
else (.serial | gsub("^[[:space:]]+|[[:space:]]+$"; ""))
end
),
size_bytes: .size,
transport: (
if .tran == null or .tran == ""
then null
else .tran
end
)
}
]
'
}