aboutsummaryrefslogtreecommitdiff
path: root/sysdump.sh
blob: bfb1f5d4ffbd4f327d11c6e4f2faa5e4b070151d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/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 && $@
}

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 "/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 "}"