aboutsummaryrefslogtreecommitdiff
path: root/sysdump.sh
blob: d4a30dce35a408fa631ac2b5cbaa46af60f0446c (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
#!/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
	key=$1
	value=$(echo "$2"|base64 -w 0)
	[ "$USE_COMMA" -eq 1 ] && echo "\"${key}\": \"${value}\","
	[ "$USE_COMMA" -eq 0 ] && echo "\"${key}\": \"${value}\""
}

# 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 "{"
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 "}"