#!/bin/bash # Vereist root if [[ $EUID -ne 0 ]]; then echo "Dit script moet als root worden uitgevoerd." exit 1 fi # ====================== # Helperfunctie voor dmidecode # ====================== get_dmi_value() { dmidecode -t "$1" | grep -m1 "$2" | cut -d: -f2- | xargs } # ====================== # Hostinformatie # ====================== HOSTNAME=$(hostname) FQDN=$(hostname -f) # Pak alle niet-loopback IPv4 adressen IP_ADDR=$(ip address | grep "inet " | awk '{print $2}' | grep -v "^127" | paste -sd ", " -) # ====================== # SYSTEEMINFORMATIE # ====================== MANUFACTURER=$(get_dmi_value system "Manufacturer") PRODUCT_NAME=$(get_dmi_value system "Product Name") SERIAL_NUMBER=$(get_dmi_value system "Serial Number") # BIOS BIOS_VERSION=$(get_dmi_value bios "Version") BIOS_DATE=$(get_dmi_value bios "Release Date") # CPU CPU_MODEL=$(dmidecode -t processor | grep -m1 "Version:" | cut -d: -f2- | xargs) CPU_SOCKETS=$(dmidecode -t processor | grep "Socket Designation:" | wc -l) # ====================== # GEHEUGEN # ====================== MEMORY_TOTAL_GB=0 while read -r SIZE_LINE; do SIZE_LINE=$(echo "$SIZE_LINE" | xargs) [[ "$SIZE_LINE" == "No Module Installed" ]] && continue SIZE_VALUE=$(echo "$SIZE_LINE" | awk '{print $1}') SIZE_UNIT=$(echo "$SIZE_LINE" | awk '{print $2}') # Skip regels met SIZE_VALUE > 999 (dus >3 digits) if (( SIZE_VALUE > 999 )); then continue fi case "$SIZE_UNIT" in MB|M) GB=$(( SIZE_VALUE / 1024 )) ;; GB|G) GB=$(( SIZE_VALUE )) ;; *) GB=0 ;; esac MEMORY_TOTAL_GB=$(( MEMORY_TOTAL_GB + GB )) done < <(dmidecode -t memory | grep "Size:" | awk -F: '{print $2}') # ====================== # SCHIJFINFORMATIE # ====================== DISKS=$(lsblk -d -P -o NAME,MODEL,SIZE,ROTA,TYPE) DISK_COUNT=$(echo "$DISKS" | grep -c 'TYPE="disk"') # ====================== # DOKUWIKI OUTPUT # ====================== cat < $(figlet $(hostname)) ^ $HOSTNAME ^ ^ | FQDN | $FQDN | | IP address | $IP_ADDR | | Fabrikant | $MANUFACTURER | | Productnaam | $PRODUCT_NAME | | Serienummer | $SERIAL_NUMBER | | BIOS-versie | $BIOS_VERSION | | BIOS-datum | $BIOS_DATE | | CPU-model | $CPU_MODEL | | CPU-sockets | $CPU_SOCKETS | | Totaal geheugen | ${MEMORY_TOTAL_GB} GB | | Aantal schijven | $DISK_COUNT | ^ Schijf ^ Model ^ Grootte ^ Type ^ EOF while read -r LINE; do eval "$LINE" # Zet NAME="sda" MODEL="QEMU HARDDISK" SIZE="20G" enz. [[ "$TYPE" != "disk" ]] && continue if [[ "$NAME" == nvme* ]]; then DISK_TYPE="NVMe" elif [[ "$ROTA" == "0" ]]; then DISK_TYPE="SSD" else DISK_TYPE="HDD" fi echo "| /dev/$NAME | ${MODEL:-Onbekend} | $SIZE | $DISK_TYPE |" done <<< "$DISKS"