#!/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"