#!/usr/bin/env bash 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 && $@ } safecmdroot() { [ $(id -u) -eq 0 ] && safecmd $@ } dump() { [ -z "$2" ] && return entry=$1 shift value=$($@|base64 -w 0) [ "$USE_COMMA" -eq 1 ] && echo "\"${entry}\": \"${value}\"," [ "$USE_COMMA" -eq 0 ] && echo "\"${entry}\": \"${value}\"" } # Read mode if [ $# -gt 0 ] then ensure jq file=$1 [ ! -f "$file" ] && { echo >&2 "Dump \"$file\" not found, abort..."; exit 1; } if [ $# -gt 1 ] then shift for entry in $@ do echo "====================> $entry" cat "$file"|jq -r ".[\"${entry}\"]"|base64 -d done exit 0 fi while IFS= read -r entry; do echo "====================> $entry" cat "$file"|jq -r ".[\"${entry}\"]"|base64 -d done <<< "$(cat "$file"|jq -r 'keys[]')" exit 0 fi # Check commands exists ensure base64 ensure date ensure find # Start dump echo "{" 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 "/etc/group" safecat /etc/group 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 "dmidecode" safecmdroot dmidecode -t system dump "fdisk" safecmdroot fdisk -l dump "env" safecmd env dump "top" safecmd top -b -n 1 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 "}"