Init project
This commit is contained in:
commit
f0d1752692
3 changed files with 90 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
dump.json
|
11
README.md
Normal file
11
README.md
Normal file
|
@ -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
|
78
sysdump.sh
Executable file
78
sysdump.sh
Executable file
|
@ -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"
|
Loading…
Add table
Reference in a new issue