#!/bin/bash

## SYSTEM PROFILE GENERATOR
## deps:
#sudo apt install grep original-awk mawk gawk sed lm-sensors xsensors lshw inxi hardinfo memtester 7zip hashcat qrencode libreoffice

clear
ts=$(date +%Y-%m-%d-%T)
echo "================================================================================"
echo " SYSTEM PROFILE GENERATOR      DATE: ${ts}"
echo "================================================================================"
## INITIAL DATA COLLECTION
#dmi=$(sudo grep -r "" /sys/class/dmi/id/[bcp]*)
sn=$(sudo cat /sys/class/dmi/id/product_serial)
mfg=$(cat /sys/class/dmi/id/board_vendor)
mn=$(cat /sys/class/dmi/id/product_name)
uid=$(sudo cat /sys/class/dmi/id/product_uuid)
tag=$(sudo cat /sys/class/dmi/id/chassis_asset_tag)
cpu=$(sudo lshw -short | grep 'processor' | awk -F 'processor' '{print $2}' | sed 's/^[ \t]*//')
gpu=$(sudo lshw -short | grep -i 'display' | awk -F 'display' '{print $2}' | sed 's/^[ \t]*//')
ram=$(sudo lshw -short | grep -i 'system memory' | awk -F  ' ' '{print $3}' | sed 's/^[ \t]*//')
drv=$(sudo lsblk -o NAME,TYPE,MODEL,SIZE,SERIAL -e 7 | grep -v '^[[:space:]]*MODEL' | grep '[^ ]')
sudo rm -rf ./.tmp/"$sn".log
sudo rm -rf ./.tmp/
mkdir ./.tmp/
sudo grep -r "" /sys/class/dmi/id/[bcp]* | tee ./.tmp/"$sn"-dmi
sudo lshw | tee -a ./.tmp/"$sn"-lshw
sudo inxi --dmidecode -ACDEGJMmNnRsxxxa | tee ./.tmp/"$sn"-inxi
sudo inxi -Bxxxa | tee -a ./.tmp/"$sn"-inxi
#sudo memtester 64 1 | tee ./.tmp/"$sn"-memtester
#sudo hardinfo -r | tee ./.tmp/"$sn"-hardinfo
clear
## REPORT START 
echo "================================================================================" | tee -a ./.tmp/"$sn".log
echo " SYSTEM PROFILE  S/N: $sn    DATE: ${ts}" | tee -a ./.tmp/"$sn".log
echo "================================================================================" | tee -a ./.tmp/"$sn".log
echo " SERIAL: $sn" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo "  MODEL: $mn" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo "    MFG: $mfg" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo "   UUID: $uid" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo "    TAG: $tag" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo "    CPU: $cpu" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo "    GPU: $gpu" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo "    RAM: $ram" | tee -a ./.tmp/"$sn".log
echo "================================================================================" | tee -a ./.tmp/"$sn".log
echo " DRIVES: " | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo "$drv" | tee -a ./.tmp/"$sn".log
echo "================================================================================" | tee -a ./.tmp/"$sn".log
echo " SYSTEM DETAIL:" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
grep '' ./.tmp/"$sn"-inxi | tee -a ./.tmp/"$sn".log
#echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
#sudo inxi -Bxxxa | tee -a ./.tmp/"$sn".log
echo  | tee -a ./.tmp/"$sn".log
echo "================================================================================" | tee -a ./.tmp/"$sn".log
echo " DRIVE DETAIL:" | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
sudo ./hds | tee -a ./.tmp/"$sn".log
grep -v 'Hard Disk Se' ./.tmp/"$sn".log > temp && mv temp ./.tmp/"$sn".log
grep -v 'Start with' ./.tmp/"$sn".log > temp && mv temp ./.tmp/"$sn".log
grep -v 'Examining hard' ./.tmp/"$sn".log > temp && mv temp ./.tmp/"$sn".log
grep -v 'More info' ./.tmp/"$sn".log > temp && mv temp ./.tmp/"$sn".log
grep -v 'http://www.hdse' ./.tmp/"$sn".log > temp && mv temp ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" 
echo " PRESS ENTER TO BENCHMARK, R FOR REPORT, Q TO RELOAD, OR E TO EXIT"
echo "================================================================================" | tee -a ./.tmp/"$sn".log
read -r -n 1 -s key
  if [ "$key" = "R" ] || [ "$key" = "r" ]; then
    #echo "================================================================================" | tee -a ./.tmp/"$sn".log
    ## NOTES
    echo  | tee -a ./.tmp/"$sn".log
    echo " ENTER NOTES TO INCLUDE:"
    echo " NOTES:" | tee -a ./.tmp/"$sn".log
    read -r note
    echo " $note" >> ./.tmp/"$sn".log
    echo  | tee -a ./.tmp/"$sn".log
    echo " TECH:" | tee -a ./.tmp/"$sn".log
    read -r tech
    echo " $tech" >> ./.tmp/"$sn".log
    echo  | tee -a ./.tmp/"$sn".log
    echo "================================================================================" | tee -a ./.tmp/"$sn".log
    ## REPORT END
    echo " PRESS ENTER TO PRINT REPORT OR CTRL-C TO EXIT"
    read -r -n1
    echo "================================================================================"
    echo " GENERATING REPORT FILE: $sn.pdf..."
    echo "--------------------------------------------------------------------------------" 
    #mkdir ./rp/
    soffice --headless --convert-to pdf --outdir ./ ./.tmp/"$sn".log
    rm ./.tmp/"$sn".log
    sudo rm -rf ./.tmp/
    qrencode -l H -o ./"$sn".png "$sn"
    open ./"$sn".pdf; open ./"$sn".png
    qrencode -t ANSI -o - "$sn" -s 1 -m 1 -M
    echo "================================================================================"
    read -r -n1
    exit
  else
    if [ "$key" = "q" ] || [ "$key" = "Q" ]; then
    exec bash "$0" "$@"
  else
    if [ "$key" = "e" ] || [ "$key" = "E" ]; then
    exit
  fi
  fi
  fi
# BENCHMARKS
echo " BENCHMARK SCORES:" >> ./.tmp/"$sn".log
echo " BENCHMARKING..."
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo " RUNNING 7-ZIP BENCHMARK..."
echo "--------------------------------------------------------------------------------"
echo " 7-ZIP: " >> ./.tmp/"$sn".log
7z b | grep 'Tot:' | awk '{print $4}' >> ./.tmp/"$sn".log; sed -i '$ s/$/ MIPS/' ./.tmp/"$sn".log
echo " 7-ZIP SCORE:"; awk '/7-ZIP/ {getline; print}' ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo " RUNNING HASHCAT BENCHMARK..."
echo "--------------------------------------------------------------------------------"
echo " HASHCAT: " >> ./.tmp/"$sn".log
hashcat -bm0 | grep 'Speed.#1.........:' | awk '{print $2,$3}' >> ./.tmp/"$sn".log
echo " HASHCAT SCORE:"; awk '/HASHCAT/ {getline; print}' ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
echo " RUNNING OTHER BENCHMARKS..."
echo "--------------------------------------------------------------------------------"
hardinfo -r > ./.tmp/"$sn"-hardinfo
echo "--------------------------------------------------------------------------------"
echo " OTHER BENCHMARK SCORES: " | tee -a ./.tmp/"$sn".log
echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
grep -A 1 'CPU Blowfish-' ./.tmp/"$sn"-hardinfo | tee -a ./.tmp/"$sn".log
echo  | tee -a ./.tmp/"$sn".log
grep -A 1 'CPU CryptoHash-' ./.tmp/"$sn"-hardinfo | tee -a ./.tmp/"$sn".log
echo  | tee -a ./.tmp/"$sn".log
grep -A 1 'CPU Fibonacci-' ./.tmp/"$sn"-hardinfo | tee -a ./.tmp/"$sn".log
echo  | tee -a ./.tmp/"$sn".log
grep -A 1 'CPU N-Queens-' ./.tmp/"$sn"-hardinfo | tee -a ./.tmp/"$sn".log
echo  | tee -a ./.tmp/"$sn".log
grep -A 1 'CPU Zlib-' ./.tmp/"$sn"-hardinfo | tee -a ./.tmp/"$sn".log
echo  | tee -a ./.tmp/"$sn".log
grep -A 1 'FPU FFT-' ./.tmp/"$sn"-hardinfo | tee -a ./.tmp/"$sn".log
echo  | tee -a ./.tmp/"$sn".log
grep -A 1 'FPU Raytracing-' ./.tmp/"$sn"-hardinfo | tee -a ./.tmp/"$sn".log
echo  | tee -a ./.tmp/"$sn".log
## TESTS
#echo "================================================================================" | tee -a ./.tmp/"$sn".log
#echo " TESTS:"
#echo "--------------------------------------------------------------------------------" | tee -a ./.tmp/"$sn".log
#echo " MEMORY:"
#sudo memtester 64 1 | tee -a ./.tmp/"$sn".log ## CAUTION - LOG SPAM
echo "================================================================================" | tee -a ./.tmp/"$sn".log
## NOTES
echo  | tee -a ./.tmp/"$sn".log
echo " ENTER NOTES TO INCLUDE:"
echo " NOTES:" | tee -a ./.tmp/"$sn".log
read -r note
echo " $note" >> ./.tmp/"$sn".log
echo  | tee -a ./.tmp/"$sn".log
echo " TECH:" | tee -a ./.tmp/"$sn".log
read -r tech
echo " $tech" >> ./.tmp/"$sn".log
echo  | tee -a ./.tmp/"$sn".log
echo "================================================================================" | tee -a ./.tmp/"$sn".log
## REPORT END
echo " PRESS ENTER TO PRINT REPORT OR CTRL-C TO EXIT"
read -r -n1
echo "================================================================================"
echo " GENERATING REPORT FILE: $sn.pdf..."
echo "--------------------------------------------------------------------------------" 
#mkdir ./rp/
soffice --headless --convert-to pdf --outdir ./ ./.tmp/"$sn".log
rm ./.tmp/"$sn".log
sudo rm -rf ./.tmp/
qrencode -l H -o ./"$sn".png "$sn"
open ./"$sn".pdf; open ./"$sn".png
qrencode -t ANSI -o - "$sn" -s 1 -m 1 -M
echo "================================================================================"
read -r -n1

