mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-28 07:22:50 -05:00
separate scripts
This commit is contained in:
81
sysmon_static.sh
Executable file
81
sysmon_static.sh
Executable file
@@ -0,0 +1,81 @@
|
||||
#!/usr/bin/env bash
|
||||
# Outputs static system info + detected GPUs as JSON (no temps)
|
||||
|
||||
set -o pipefail
|
||||
exec 2>/dev/null
|
||||
|
||||
json_escape() { sed -e 's/\\/\\\\/g' -e 's/"/\\"/g' -e ':a;N;$!ba;s/\n/\\n/g'; }
|
||||
|
||||
printf "{"
|
||||
|
||||
cpu_count=$(nproc)
|
||||
cpu_model=$(grep -m1 'model name' /proc/cpuinfo | cut -d: -f2- | sed 's/^ *//' | json_escape || echo 'Unknown')
|
||||
printf '"cpu":{"count":%d,"model":"%s"},' "$cpu_count" "$cpu_model"
|
||||
|
||||
dmip="/sys/class/dmi/id"
|
||||
[ -d "$dmip" ] || dmip="/sys/devices/virtual/dmi/id"
|
||||
mb_vendor=$([ -r "$dmip/board_vendor" ] && cat "$dmip/board_vendor" | json_escape || echo "Unknown")
|
||||
mb_name=$([ -r "$dmip/board_name" ] && cat "$dmip/board_name" | json_escape || echo "")
|
||||
bios_ver=$([ -r "$dmip/bios_version" ] && cat "$dmip/bios_version" | json_escape || echo "Unknown")
|
||||
bios_date=$([ -r "$dmip/bios_date" ] && cat "$dmip/bios_date" | json_escape || echo "")
|
||||
|
||||
kern_ver=$(uname -r | json_escape)
|
||||
distro=$(grep PRETTY_NAME /etc/os-release 2>/dev/null | cut -d= -f2- | tr -d '"' | json_escape || echo 'Unknown')
|
||||
host_name=$(hostname | json_escape)
|
||||
arch_name=$(uname -m)
|
||||
|
||||
printf '"system":{"kernel":"%s","distro":"%s","hostname":"%s","arch":"%s","motherboard":"%s %s","bios":"%s %s"},' \
|
||||
"$kern_ver" "$distro" "$host_name" "$arch_name" "$mb_vendor" "$mb_name" "$bios_ver" "$bios_date"
|
||||
|
||||
printf '"gpus":['
|
||||
gfirst=1
|
||||
tmp_gpu=$(mktemp)
|
||||
|
||||
infer_vendor() {
|
||||
case "$1" in
|
||||
nvidia|nouveau) echo NVIDIA ;;
|
||||
amdgpu|radeon) echo AMD ;;
|
||||
i915|xe) echo Intel ;;
|
||||
*) case "$2" in
|
||||
*NVIDIA*|*Nvidia*|*nvidia*) echo NVIDIA ;;
|
||||
*AMD*|*ATI*|*amd*|*ati*) echo AMD ;;
|
||||
*Intel*|*intel*) echo Intel ;;
|
||||
*) echo Unknown ;;
|
||||
esac ;;
|
||||
esac
|
||||
}
|
||||
|
||||
prio_of() {
|
||||
local drv="$1" bdf="$2"
|
||||
case "$drv" in
|
||||
nvidia) echo 3 ;;
|
||||
amdgpu|radeon)
|
||||
local dd="${bdf##*:}"; dd="${dd%%.*}"
|
||||
[ "$dd" = "00" ] && echo 1 || echo 2
|
||||
;;
|
||||
i915|xe) echo 0 ;;
|
||||
*) echo 0 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
LC_ALL=C lspci -nnD 2>/dev/null | grep -iE ' VGA| 3D| 2D| Display' | while IFS= read -r line; do
|
||||
bdf="${line%% *}"
|
||||
drv=""
|
||||
[ -e "/sys/bus/pci/devices/$bdf/driver" ] && drv="$(basename "$(readlink -f "/sys/bus/pci/devices/$bdf/driver")")"
|
||||
vendor="$(infer_vendor "$drv" "$line")"
|
||||
raw_line="$(printf '%s' "$line" | json_escape)"
|
||||
prio="$(prio_of "$drv" "$bdf")"
|
||||
printf '%s|%s|%s|%s\n' "$prio" "$drv" "$vendor" "$raw_line" >> "$tmp_gpu"
|
||||
done
|
||||
|
||||
if [ -s "$tmp_gpu" ]; then
|
||||
while IFS='|' read -r pr drv vendor raw_line; do
|
||||
[ $gfirst -eq 1 ] || printf ","
|
||||
printf '{"driver":"%s","vendor":"%s","rawLine":"%s"}' "$drv" "$vendor" "$raw_line"
|
||||
gfirst=0
|
||||
done < <(sort -t'|' -k1,1nr -k2,2 "$tmp_gpu")
|
||||
fi
|
||||
|
||||
rm -f "$tmp_gpu"
|
||||
printf ']'
|
||||
printf "}\n"
|
||||
Reference in New Issue
Block a user