spb/maclustr-appmanager
Public
HTML 61.4%
JavaScript 24.5%
Shell 14.1%
1#!/bin/sh2# maclustr app-manager — POSIX-sh per-node collector (no python/jq needed).3# Emits a simple line protocol parsed by the Node server.4echo "HOST $(hostname -s 2>/dev/null)"5echo "CORES $(sysctl -n hw.ncpu 2>/dev/null)"6echo "MEMTOTAL $(sysctl -n hw.memsize 2>/dev/null)"78ps=$(sysctl -n hw.pagesize 2>/dev/null); [ -z "$ps" ] && ps=163849vms=$(vm_stat 2>/dev/null)10act=$(printf '%s\n' "$vms" | awk '/Pages active/{gsub(/[^0-9]/,"",$NF);print $NF}')11wir=$(printf '%s\n' "$vms" | awk '/Pages wired/{gsub(/[^0-9]/,"",$NF);print $NF}')12cmp=$(printf '%s\n' "$vms" | awk '/occupied by compressor/{gsub(/[^0-9]/,"",$NF);print $NF}')13act=${act:-0}; wir=${wir:-0}; cmp=${cmp:-0}14echo "MEMUSED $(( (act + wir + cmp) * ps ))"1516la=$(sysctl -n vm.loadavg 2>/dev/null | tr -d '{}')17[ -z "$(echo $la | tr -d ' ')" ] && la=$(uptime | sed -n 's/.*averages*[:,]* *\([0-9.]*\)[ ,]*\([0-9.]*\)[ ,]*\([0-9.]*\).*/\1 \2 \3/p')18echo "LOAD $la"19echo "BOOT $(sysctl -n kern.boottime 2>/dev/null | sed -n 's/.*sec = \([0-9]*\).*/\1/p')"20df -k / 2>/dev/null | tail -1 | awk '{print "DISK "$2*1024" "$3*1024" "$5}'2122# listening TCP ports (skip pure-OS services)23lsof -nP -iTCP -sTCP:LISTEN 2>/dev/null | tail -n +2 | while read -r cmd pid user fd type dev sz nod name rest; do24 case "$name" in *:*) ;; *) continue ;; esac25 case "$cmd" in ARDAgent|rapportd|sshd|launchd|mDNSResponder|identityservicesd|ControlCe|ControlCenter|sharingd|remoted|AnyDesk|anydesk|Google*) continue ;; esac26 port=${name##*:}; host=${name%:*}27 case "$port" in ''|*[!0-9]*) continue ;; esac28 lb=0; case "$host" in 127.0.0.1|"[::1]"|"::1"|"*") lb=1 ;; esac29 cwd=$(lsof -p "$pid" -a -d cwd -Fn 2>/dev/null | sed -n 's/^n//p' | head -1)30 printf 'PORT %s\t%s\t%s\t%s\n' "$port" "$cmd" "$lb" "$cwd"31done3233# ngrok tunnels — split JSON into per-tunnel objects (POSIX sh, no process subst)34for p in 4040 4041 4042 4043 4044 4045 4046 4047 4048; do35 j=$(curl -s --max-time 1 "http://127.0.0.1:$p/api/tunnels" 2>/dev/null)36 [ -z "$j" ] && continue37 { printf '%s' "$j" | sed 's/},{/}@{/g' | tr '@' '\n'; echo; } | while IFS= read -r obj; do38 u=$(printf '%s' "$obj" | grep -o '"public_url":"[^"]*"' | head -1 | sed 's/.*:"//;s/"$//')39 [ -z "$u" ] && continue40 a=$(printf '%s' "$obj" | grep -o '"addr":"[^"]*"' | head -1 | sed 's/.*:"//;s/"$//')41 printf 'TUN %s\t%s\n' "$u" "$a"42 done43done4445# launchd: user agents + relevant system daemons46loaded=$(launchctl list 2>/dev/null)47for plist in "$HOME"/Library/LaunchAgents/*.plist; do48 [ -e "$plist" ] || continue49 label=$(basename "$plist" .plist)50 printf '%s' "$label" | grep -qiE 'apple|google|micro|docker|tailscale|openssh|knollsoft|anydesk' && continue51 info=$(printf '%s\n' "$loaded" | awk -v L="$label" '$3==L{print $1}')52 if [ -n "$info" ]; then ld=1; pid="$info"; run=0; { [ "$pid" != "-" ] && [ -n "$pid" ]; } && run=1; else ld=0; pid="-"; run=0; fi53 printf 'AGENT %s\tuser\t%s\t%s\t%s\n' "$label" "$ld" "$run" "$pid"54done55for plist in /Library/LaunchDaemons/*.plist; do56 [ -e "$plist" ] || continue57 label=$(basename "$plist" .plist)58 printf '%s' "$label" | grep -qiE 'apple|openssh|homebrew' && continue59 printf '%s' "$label" | grep -qiE 'maclustr|ngrok|allconverter|vquant|spb|louka|zyquo|al-l|localai|crawl|image|drive' || continue60 info=$(printf '%s\n' "$loaded" | awk -v L="$label" '$3==L{print $1}')61 if [ -n "$info" ]; then ld=1; pid="$info"; run=1; else ld=0; pid="-"; run=0; fi62 printf 'AGENT %s\tsystem\t%s\t%s\t%s\n' "$label" "$ld" "$run" "$pid"63done64echo "END"65