Repo Browser

bashcards/bashcards-android
cards/369862062641--amd-recon/assets/raw.sh
#!/usr/bin/env bash
set -euo pipefail;bash -c $'R=$\'\\033[0m\';G=$\'\\033[38;5;46m\';Y=$\'\\033[38;5;226m\';C=$\'\\033[38;5;51m\';W=$\'\\033[38;5;255m\';E=$\'\\033[38;5;196m\'\nBASE="${BASE:-/home/douglas/AMD/LOGS}"\nSTAMP="$(date +%F)"\nLOGDIR="${LOGDIR:-$BASE/$STAMP}"\nBASIC="$LOGDIR/basic.conf"\nneed(){ command -v "$1" >/dev/null 2>&1; }\nsay(){ printf "%b\\n" "$1$R"; }\npause(){ read -r -p "Enter to continue... " _; }\nmk(){ mkdir -p "$LOGDIR" && cd "$LOGDIR" || exit 1; }\nbasic(){\n  mk\n  : > "$BASIC"\n  sudo -v || return 1\n  if need lshw; then sudo lshw -c cpu 2>/dev/null | grep -i product >> "$BASIC"; else echo "lshw:missing" >> "$BASIC"; fi\n  if need lspci; then lspci -nn 2>/dev/null | grep -i "amd" >> "$BASIC"; else echo "lspci:missing" >> "$BASIC"; fi\n  if need dmidecode; then sudo dmidecode -t BIOS 2>/dev/null | grep -i Version >> "$BASIC"; else echo "dmidecode:missing" >> "$BASIC"; fi\n  if need lsb_release; then lsb_release -sd 2>/dev/null >> "$BASIC"; else echo "lsb_release:missing" >> "$BASIC"; fi\n  uname -a >> "$BASIC"\n  if need dkms; then dkms status 2>/dev/null >> "$BASIC"; else echo "dkms:missing" >> "$BASIC"; fi\n  say "${G}Wrote:${W} $BASIC"\n}\nlogs(){\n  mk\n  sudo -v || return 1\n  if need dkms; then dkms status > dkms.status.log 2>&1; else printf "dkms missing\\n" > dkms.status.log; fi\n  if need lsmod; then lsmod | grep -i amdgpu > lsmod.amdgpu.log 2>&1 || true; else printf "lsmod missing\\n" > lsmod.amdgpu.log; fi\n  if need dmesg; then sudo dmesg > dmesg.log 2>&1; else printf "dmesg missing\\n" > dmesg.log; fi\n  if need dpkg; then dpkg -l > package.log 2>&1; else printf "dpkg not found (non-debian?)\\n" > package.log; fi\n  say "${G}Wrote:${W} dkms.status.log lsmod.amdgpu.log dmesg.log package.log"\n}\ndeep(){\n  mk\n  sudo -v || return 1\n  if need lspci; then lspci -vnn > lspci.vnn.log 2>&1; lspci -nn > lspci.nn.log 2>&1; else printf "lspci missing\\n" > lspci.vnn.log; printf "lspci missing\\n" > lspci.nn.log; fi\n  if need dmidecode; then sudo dmidecode > dmidecode.log 2>&1; else printf "dmidecode missing\\n" > dmidecode.log; fi\n  uname -a > uname.a.log 2>&1\n  if need lsinitramfs; then lsinitramfs "/boot/initrd.img-$(uname -r)" > lsinitramfs.log 2>&1; else printf "lsinitramfs missing (initramfs-tools)\\n" > lsinitramfs.log; fi\n  if need lshw; then sudo lshw > lshw.log 2>&1; else printf "lshw missing\\n" > lshw.log; fi\n  if need modinfo; then modinfo amdgpu > modinfo.amdgpu.log 2>&1; else printf "modinfo missing\\n" > modinfo.amdgpu.log; fi\n  if need glxinfo; then glxinfo > glxinfo.log 2>&1; else printf "glxinfo missing (mesa-utils)\\n" > glxinfo.log; fi\n  say "${G}Wrote:${W} lspci.* dmidecode.log uname.a.log lsinitramfs.log lshw.log modinfo.amdgpu.log glxinfo.log"\n}\nlistlogs(){ mk; ls -lah; }\nview(){\n  mk\n  local f\n  read -r -p "File name (exact): " f\n  [[ -z "${f:-}" ]] && return 0\n  [[ ! -f "$LOGDIR/$f" ]] && say "${E}Not found:${W} $LOGDIR/$f" && return 1\n  if need less; then less -R "$LOGDIR/$f"; else sed -n \'1,200p\' "$LOGDIR/$f"; fi\n}\ntailf(){\n  mk\n  local f\n  read -r -p "File name (exact): " f\n  [[ -z "${f:-}" ]] && return 0\n  [[ ! -f "$LOGDIR/$f" ]] && say "${E}Not found:${W} $LOGDIR/$f" && return 1\n  tail -n 200 "$LOGDIR/$f"\n  pause\n}\npack(){\n  mk\n  local out="$BASE/amd-gpu-logs-$STAMP.tar.gz"\n  tar -czf "$out" -C "$BASE" "$STAMP" 2>/dev/null || tar -czf "$out" -C "$(dirname "$LOGDIR")" "$(basename "$LOGDIR")"\n  say "${G}Packed:${W} $out"\n}\nwhile true; do\n  printf "\\n%b\\n" "${C}AMD GPU LOG MENU${R}"\n  printf "%b\\n" "${W}Log dir:${Y} $LOGDIR${R}"\n  printf "%b\\n" "${W}1) Basic config -> basic.conf${R}"\n  printf "%b\\n" "${W}2) Create log files${R}"\n  printf "%b\\n" "${W}3) In-depth analysis${R}"\n  printf "%b\\n" "${W}4) Run ALL (1+2+3)${R}"\n  printf "%b\\n" "${W}5) List files in log dir${R}"\n  printf "%b\\n" "${W}6) View a file (less/head)${R}"\n  printf "%b\\n" "${W}7) Tail last 200 lines${R}"\n  printf "%b\\n" "${W}8) Pack logs to .tar.gz${R}"\n  printf "%b\\n" "${W}q) Quit${R}\\n"\n  read -r -p "> " x\n  case "${x:-}" in\n    1) basic; pause;;\n    2) logs; pause;;\n    3) deep; pause;;\n    4) basic && logs && deep; pause;;\n    5) listlogs; pause;;\n    6) view;;\n    7) tailf;;\n    8) pack; pause;;\n    q|Q) exit 0;;\n    *) say "${E}Invalid option${R}";;\n  esac\ndone\n'
NameTypeSize
auto-art.pngfile1,970,973
back-data-url.txtfile236,710
back-thumb.pngfile170,384
back.pngfile177,515
front-data-url.txtfile280,518
front-thumb.pngfile133,245
front.pngfile210,371
manifest.txtfile184
qr-payload.txtfile1,947
raw.shfile4,348