From f0d1752692401b77bcfc3b227e729d6e3aa66762 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Gu=C3=A9gan?= Date: Thu, 4 Jul 2024 10:36:00 +0200 Subject: [PATCH] Init project --- .gitignore | 1 + README.md | 11 ++++++++ sysdump.sh | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100755 sysdump.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..51f0c7a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +dump.json \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..2536516 --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# System dump script + +Dump various system informations into a base64 encoded value into a json file. + +# Usage +Run a dump: +> ./sysdump.sh +Result is place into `dump.json`. + +Explore a dump (require `jq`) +> ./sysdump.sh dump.json diff --git a/sysdump.sh b/sysdump.sh new file mode 100755 index 0000000..1599275 --- /dev/null +++ b/sysdump.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +OUT="./dump.json" + +ensure() { + command -v "$1" >/dev/null 2>&1 || { echo >&2 "$1 not found, abort..."; exit 1; } +} + +safecat() { + [ -f "$1" ] && [ -r "$1" ] && cat "$1" +} + +safecmd() { + command -v "$1" >/dev/null 2>&1 && $@ +} + +dump() { + [ -z "$2" ] && return + key=$1 + value=$(echo "$2"|base64 -w 0) + [ "$USE_COMMA" -eq 1 ] && echo "\"${key}\": \"${value}\"," >> "$OUT" + [ "$USE_COMMA" -eq 0 ] && echo "\"${key}\": \"${value}\"" >> "$OUT" +} + +# Read mode +if [ $# -gt 0 ] +then + ensure jq + file=$1 + [ ! -f "$file" ] && { echo >&2 "Dump \"$file\" not found, abort..."; exit 1; } + while IFS= read -r key; do + echo "====================> $key" + cat "$file"|jq -r ".[\"${key}\"]"|base64 -d + done <<< "$(cat "$file"|jq -r 'keys[]')" + exit 0 +fi + +# Check commands exists +ensure base64 +ensure date +ensure find + +# Start dump +echo "{" > "$OUT" +USE_COMMA=1 +dump "date" "$(date +%s)" +dump "hostname" "$(safecmd hostname)" +dump "id" "$(safecmd id)" +dump "uid" "$(safecmd id -u)" +dump "gid" "$(safecmd id -g)" +dump "gids" "$(safecmd id -G)" +dump "ipaddr" "$(safecmd ip addr)" +dump "/etc/nftables.conf" "$(safecat /etc/nftables.conf)" +dump "/proc/cpuinfo" "$(safecat /proc/cpuinfo)" +dump "/etc/os-release" "$(safecat /etc/os-release)" +dump "/proc/zoneinfo" "$(safecat /proc/zoneinfo)" +dump "/proc/meminfo" "$(safecat /proc/meminfo)" +dump "/proc/cmdline" "$(safecat /proc/cmdline)" +dump "uname" "$(uname -a)" +dump "lsb_release" "$(safecmd lsb_release)" +dump "uptime" "$(safecmd uptime)" +dump "mount" "$(safecmd mount)" +dump "lscpu" "$(safecmd lscpu)" +dump "lsblk" "$(safecmd lsblk)" +dump "lsusb" "$(safecmd lsusb)" +dump "lsmod" "$(safecmd lsmod)" +dump "lspci" "$(safecmd lspci)" +dump "lsirq" "$(safecmd lsirq)" +dump "lsfd" "$(safecmd lsfd)" +dump "locale" "$(safecmd locale)" +dump "timezone" "$(safecat /etc/timezone)" +dump "systemctl" "$(safecmd systemctl --no-pager)" +dump "free" "$(safecmd free -h)" +dump "df" "$(safecmd df -h)" +dump "boot_folder" "$(safecmd ls -al /boot/)" +USE_COMMA=0 +dump "root_folder" "$(safecmd ls -al /)" +echo "}" >> "$OUT"