#!/bin/sh
# pf-health.sh: read-only snapshot for a pfSense firewall (FreeBSD sh). Run from Diagnostics > Command Prompt or SSH option 8.
# Prints key=value lines for the Overnight Console "Host triage" tab. Changes nothing.
kv() { printf '%s=%s\n' "$1" "$2"; }
echo "# pf-health v1"
kv host "$(hostname)"
kv ts_utc "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
kv pf_version "$(cat /etc/version 2>/dev/null)"
kv uptime "$(uptime | sed 's/.*up \([^,]*\),.*/\1/')"
kv pf_states "$(pfctl -si 2>/dev/null | awk '/current entries/{print $3}')"
kv pf_state_limit "$(pfctl -sm 2>/dev/null | awk '/^states/{print $4}')"
# name,loss,delay,status   (dpinger gateway monitor)
pfSsh.php playback gatewaystatus 2>/dev/null | awk 'NR>1 && NF>=7{gsub("%","",$6); print "gateway="$1","$6","$4","$7}'
# CARP HA role per interface
ifconfig 2>/dev/null | awk '/^[a-z]/{i=$1; sub(":","",i)} /carp:/{print "carp="i","$2}'
kv disk_root "$(df -h / | awk 'NR==2{print $5}')"
echo "# end"
