mirror of
https://github.com/myronblair/proxmox-config
synced 2026-06-30 15:59:57 -05:00
57 lines
1.9 KiB
Bash
Executable File
57 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# JARVIS VoIP Phone Probe — runs every minute on PVE1
|
|
# Pings all Yealink phones + checks FusionPBX SIP registration (read-only)
|
|
# 200.3 is on an external FusionPBX — ping only, no SIP check
|
|
|
|
JARVIS_URL="https://165.22.1.228"
|
|
JARVIS_HOST="jarvis.orbishosting.com"
|
|
REG_KEY="f846a9aaf7ce9a61742c63c87c4186052a71d2a580c65518"
|
|
FUSION_HOST="134.209.72.226"
|
|
|
|
# IP|alias|extension(none=skip SIP check)|mac
|
|
PHONES=(
|
|
"10.48.200.2|Yealink — Myron Main (Ext 1000)|1000|80:5e:c0:35:04:77"
|
|
"10.48.200.3|Yealink — United Mirror & Glass (External SIP)|none|c4:fc:22:28:63:71"
|
|
"10.48.200.43|Yealink T48S — Tommy Main (Ext 1001)|1001|80:5e:0c:15:0c:4f"
|
|
"10.48.200.86|Yealink — Myron Vanguard WiFi (Offline During Work Hrs)|none|"
|
|
"10.48.200.65|Yealink — Myron Vanguard Work (Ext 1003)|1003|c4:fc:22:13:e1:89"
|
|
)
|
|
|
|
# Get SIP registrations from FusionPBX (read-only)
|
|
REG_OUTPUT=$(ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 -o BatchMode=yes \
|
|
root@$FUSION_HOST "fs_cli -x 'show registrations'" 2>/dev/null || echo "")
|
|
|
|
DEVICES="["
|
|
FIRST=1
|
|
for PHONE in "${PHONES[@]}"; do
|
|
IFS='|' read -r IP ALIAS EXT MAC <<< "$PHONE"
|
|
|
|
# Ping probe
|
|
if ping -c 1 -W 2 "$IP" > /dev/null 2>&1; then
|
|
STATUS="online"
|
|
else
|
|
STATUS="offline"
|
|
fi
|
|
|
|
# SIP check — skip for external phones (ext=none)
|
|
if [ "$EXT" = "none" ]; then
|
|
SIP="external"
|
|
elif [ -n "$REG_OUTPUT" ] && echo "$REG_OUTPUT" | grep -q "^${EXT},"; then
|
|
SIP="registered"
|
|
else
|
|
SIP="unregistered"
|
|
fi
|
|
|
|
[ $FIRST -eq 0 ] && DEVICES+=","
|
|
DEVICES+="{\"ip\":\"$IP\",\"alias\":\"$ALIAS\",\"mac\":\"$MAC\",\"vendor\":\"Yealink\",\"status\":\"$STATUS\",\"sip_status\":\"$SIP\",\"extension\":\"$EXT\"}"
|
|
FIRST=0
|
|
done
|
|
DEVICES+="]"
|
|
|
|
curl -sk --max-time 10 \
|
|
-X POST "$JARVIS_URL/api/netscan" \
|
|
-H "Host: $JARVIS_HOST" \
|
|
-H "Content-Type: application/json" \
|
|
-H "X-Registration-Key: $REG_KEY" \
|
|
-d "{\"devices\":$DEVICES}" > /dev/null 2>&1
|