secubox-openwrt/scripts/diagnose.sh

86 lines
2.0 KiB
Bash
Raw Permalink Normal View History

#!/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 "$@"