summaryrefslogtreecommitdiffstats
path: root/server/ipxe/bash_scripts/grepSystemInfo.sh
diff options
context:
space:
mode:
Diffstat (limited to 'server/ipxe/bash_scripts/grepSystemInfo.sh')
-rw-r--r--server/ipxe/bash_scripts/grepSystemInfo.sh112
1 files changed, 112 insertions, 0 deletions
diff --git a/server/ipxe/bash_scripts/grepSystemInfo.sh b/server/ipxe/bash_scripts/grepSystemInfo.sh
new file mode 100644
index 0000000..4ce42ab
--- /dev/null
+++ b/server/ipxe/bash_scripts/grepSystemInfo.sh
@@ -0,0 +1,112 @@
+#!/bin/bash
+. /lib/dracut-lib.sh
+# http://git.openslx.org/openslx-ng/mltk.git/tree/core/modules/hardware-stats/data/opt/openslx/scripts/systemd-hardware_stats
+# dmidecode | grep -i UUID
+
+# MAC
+# MAC=$(ip addr show | grep -Eo -m 1 'ether\s.*\sbrd')
+# MAC=${MAC#"ether "}
+# MAC=${MAC%" brd"}
+
+# UUID
+UUID=$(dmidecode -q -s system-uuid | grep -v '^#' | head -n 1 | tr '[a-z]' '[A-Z]')
+
+# System
+MANUFACTURER=$(dmidecode -q -s system-manufacturer)
+MODEL=$(dmidecode -q -s system-product-name)
+SERIAL=$(dmidecode -q -s system-serial-number)
+VENDOR=$(dmidecode | grep -Eo '(Vendor).*')
+VENDOR=${VENDOR#"Vendor: "}
+
+# Mainboard
+MAINBOARD_MANUFACTURER=$(dmidecode -q -s baseboard-manufacturer)
+MAINBOARD_MODEL=$(dmidecode -q -s baseboard-product-name)
+MAINBOARD_SERIAL_NUMBER=$(dmidecode -q -s baseboard-serial-number)
+
+# CPU
+CPU_MODEL=$(dmidecode -q -s processor-version)
+# CPUMODEL=$(grep -m1 '^model name\s*:' /proc/cpuinfo | sed 's/^model name\s*:\s*//;s/\s\s*/ /g;s/^ //;s/ $//')
+CPU_MANUFACTURER=$(dmidecode -q -s processor-manufacturer)
+CPU_TYPE=$(dmidecode -q -s processor-family)
+CPU_CORES=$(cat /sys/devices/system/cpu/cpu*/topology/thread_siblings_list | sort -u | wc -l)
+CPU_FREQUENCY=$(dmidecode -q -s processor-frequency)
+CPU_FREQUENCY=${CPU_FREQUENCY%" MHz"}
+
+# RAM
+# RAM=$(grep -m1 '^MemTotal:' /proc/meminfo | awk '{print $2}')
+# RAM=$(( $RAM / 1024 ))
+# if [ -z "$RAM" ] || [ "$RAM" -lt 500 ]; then
+# # Fallback to dmidecode
+# RAM=0
+# for c in $(dmidecode -t 17 | grep -o 'Size:.*MB$' | awk '{print $2}'); do
+# RAM=$(( $RAM + $c ))
+# done
+# fi
+
+# RAM_SIZE=$(dmidecode -t 17 | grep -o 'Size:.*[MG]B$')
+RAM_SIZE=$(dmidecode -t 17 | grep -o 'Size:.*')
+RAM_MANUFACTURER=$(dmidecode -t 17 | grep -o 'Manufacturer:.*')
+RAM_TYPE=$(dmidecode -t 17 | grep -o 'Type:.*')
+RAM_ISECC=$(dmidecode -t 16 | grep -o 'Error Correction Type:.*')
+RAM_FORMFACTOR=$(dmidecode -t 17 | grep -o 'Form Factor:.*')
+
+# HDD / SSD
+# hd parm or smartctl from smartmontools
+drives=$(ls /dev/sd* | grep -o '/dev/sd.$')
+
+DRIVES=()
+for drive in $drives; do
+ # drivedata=$(sudo smartctl -i $drive)
+ # drivedata1=$(sudo hdparm -I $drive)
+ drivedata=$(mktemp)
+ smartctl -i $drive >> $drivedata
+ DRIVE=()
+
+ # Model
+ #echo $(sudo smartctl -i $drive | grep -o "Device Model: .*")
+ #echo $(sudo hdparm -I $drive | grep -o "Model Number: .*")
+ DRIVE_MODEL=$(cat $drivedata | grep -o "Device Model: .*")
+ DRIVE+=($DRIVE_MODEL)
+ DRIVE+=('%ATTRIBUTE_SPLITTER%')
+
+ # Serial
+ #echo $(sudo smartctl -i $drive | grep -o "Serial Number: .*")
+ #echo $(sudo hdparm -I $drive | grep -o "Serial Number: .*")
+ DRIVE_SERIAL=$(cat $drivedata | grep -o "Serial Number: .*")
+ DRIVE+=($DRIVE_SERIAL)
+ DRIVE+=('%ATTRIBUTE_SPLITTER%')
+
+ # Capacity
+ #echo $(sudo smartctl -i $drive | grep -o "User Capacity: .*")
+ #echo $(sudo hdparm -I $drive | grep -o "device size with M = 1000\*1000: .*")
+ DRIVE_CAPACITY=$(cat $drivedata | grep -o "User Capacity: .*" | grep -Pzo '(?<=\[)(.*?)(?=\])')
+ DRIVE+=($DRIVE_CAPACITY)
+ DRIVE+=('%ATTRIBUTE_SPLITTER%')
+
+ # Type
+ #echo $(sudo smartctl -i $drive | grep -o "Rotation Rate: .*")
+ #echo $(sudo hdparm -Ibash $drive | grep -o "Nominal Media Rotation Rate: .*")
+ DRIVE_TYPE=$(cat $drivedata | grep -o "Rotation Rate: .*")
+ DRIVE+=($DRIVE_TYPE)
+ DRIVE+=('%ATTRIBUTE_SPLITTER%')
+
+ # Form Factor
+ #echo $(sudo smartctl -i $drive | grep -o "Form Factor: .*")
+ #echo $(sudo hdparm -I $drive | grep -o "Form Factor: .*")
+ DRIVE_FORMFACTOR=$(cat $drivedata | grep -o "Form Factor: .*")
+ DRIVE+=($DRIVE_FORMFACTOR)
+ DRIVE+=('%ATTRIBUTE_SPLITTER%')
+
+ # Connection
+ #echo $(sudo smartctl -i $drive | grep -o "SATA Version is: .*")
+ #echo $(sudo hdparm -I $drive | grep -o "signaling speed .*")
+ DRIVE_CONNECTION=$(cat $drivedata | grep -o "SATA Version is: .*")
+ DRIVE+=($DRIVE_CONNECTION)
+
+ DRIVES+=(${DRIVE[*]})
+ DRIVES+=("%OBJECT_SPLITTER%")
+done
+
+# Curl
+#curl --data "state=6" --insecure https://bas.stfu-kthx.net:8888/api/registrations/$UUID/state
+curl -d "name=Client_$UUID&sys_manufacturer=$MANUFACTURER&sys_model=$MODEL&sys_serial=$SERIAL&cpu_model=$CPU_MODEL&cpu_manufacturer=$CPU_MANUFACTURER&cpu_type=$CPU_TYPE&cpu_cores=$CPU_CORES&cpu_frequency=$CPU_FREQUENCY&ram_size=$RAM_SIZE&ram_manufacturer=$RAM_MANUFACTURER&ram_type=$RAM_TYPE&ram_isecc=$RAM_ISECC&ram_formfactor=$RAM_FORMFACTOR&drives=${DRIVES[*]}" -H "Content-Type: application/x-www-form-urlencoded" -X POST --insecure https://bas.intra.uni-freiburg.de/api/registration/$UUID/update