86 lines
2.0 KiB
Bash
Executable File
86 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# SecuBox diagnostic helper.
|
|
# Checks overlay storage, cgroups availability, serial adapters,
|
|
# and basic firewall sanity for LAN/WAN zones.
|
|
|
|
set -eu
|
|
|
|
err() { printf '[ERROR] %s\n' "$*" >&2; }
|
|
warn() { printf '[WARN] %s\n' "$*" >&2; }
|
|
info() { printf '[INFO] %s\n' "$*"; }
|
|
|
|
check_storage() {
|
|
local mountpoint="/overlay"
|
|
local free
|
|
free=$(df -Pm "$mountpoint" | awk 'NR==2 {print $4}')
|
|
if [ -z "$free" ]; then
|
|
err "Unable to read storage usage for $mountpoint"
|
|
return 1
|
|
fi
|
|
info "Overlay free space: ${free}MB"
|
|
if [ "$free" -lt 100 ]; then
|
|
warn "Overlay has less than 100MB free. Consider cleaning before installing apps."
|
|
fi
|
|
}
|
|
|
|
check_cgroups() {
|
|
if [ ! -d /sys/fs/cgroup ]; then
|
|
err "cgroups are not mounted at /sys/fs/cgroup"
|
|
return 1
|
|
fi
|
|
if ! mount | grep -q 'cgroup'; then
|
|
warn "cgroups filesystem present but not mounted. Docker/LXC will fail."
|
|
else
|
|
info "cgroups mount detected."
|
|
fi
|
|
}
|
|
|
|
check_serial() {
|
|
if ls /dev/ttyACM* >/dev/null 2>&1; then
|
|
info "USB ACM device(s): $(ls /dev/ttyACM* 2>/dev/null | tr '\n' ' ')"
|
|
else
|
|
warn "No /dev/ttyACM* device detected. Plug Zigbee coordinator or load kmod-usb-acm."
|
|
fi
|
|
}
|
|
|
|
check_firewall() {
|
|
if ! command -v uci >/dev/null 2>&1; then
|
|
warn "uci not found; skipping firewall checks."
|
|
return
|
|
fi
|
|
local lan_idx
|
|
lan_idx=$(uci show firewall | grep -n "name='lan'" | head -n1 | cut -d: -f1 || true)
|
|
if [ -z "$lan_idx" ]; then
|
|
warn "Firewall LAN zone missing."
|
|
else
|
|
info "Firewall LAN zone detected."
|
|
fi
|
|
local wan_idx
|
|
wan_idx=$(uci show firewall | grep -n "name='wan'" | head -n1 | cut -d: -f1 || true)
|
|
if [ -z "$wan_idx" ]; then
|
|
warn "Firewall WAN zone missing."
|
|
else
|
|
info "Firewall WAN zone detected."
|
|
fi
|
|
}
|
|
|
|
check_docker() {
|
|
if command -v docker >/dev/null 2>&1; then
|
|
info "Docker CLI available: $(docker --version 2>/dev/null)"
|
|
else
|
|
warn "Docker CLI not found. Install dockerd/docker packages before deploying containers."
|
|
fi
|
|
}
|
|
|
|
main() {
|
|
check_storage
|
|
check_cgroups
|
|
check_serial
|
|
check_firewall
|
|
check_docker
|
|
info "Diagnostics complete."
|
|
}
|
|
|
|
main "$@"
|