sync: auto-sync from HOWARD-HOME at 2026-07-03 20:52:38

Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-07-03 20:52:38
This commit is contained in:
2026-07-03 20:53:05 -07:00
parent f61088dac4
commit 442f3cb1c7
3 changed files with 160 additions and 202 deletions

View File

@@ -1,210 +1,146 @@
# GPS clients - Syncro-managed machines NOT in GuruRMM
# GPS clients - Syncro-managed machines NOT in GuruRMM (ACTIVE only)
Install ScreenConnect / push agent. Syncro assets (authoritative) vs live GuruRMM, 2026-07-03.
`folder N` = Syncro policy_folder_id (the ScreenConnect-install policy is tied to a folder - devices in the wrong folder don't get SC).
Machines missing from GuruRMM that checked into Syncro within the last 31 days. Excluded: 50 offline >31d, 0 with no check-in data. Snapshot 2026-07-03.
`folder N` = Syncro policy_folder_id.
## Folder distribution across the gap machines (spot the SC-install folder vs outliers)
- folder 4095109: 16 machines
- folder 3577293: 15 machines
- folder 651577: 13 machines
- folder 3996026: 5 machines
- folder 4086884: 4 machines
- folder 677399: 4 machines
- folder 3638391: 4 machines
- folder 2948816: 4 machines
- folder 3937024: 4 machines
- folder 3242716: 4 machines
- folder 4086890: 3 machines
- folder 4086846: 3 machines
- folder 667252: 3 machines
- folder 3426849: 3 machines
- folder 677304: 2 machines
- folder 4896982: 2 machines
- folder 4106776: 2 machines
- folder 4086906: 2 machines
- folder 615472: 2 machines
- folder 3204798: 2 machines
- folder 4100925: 2 machines
- folder 651365: 1 machines
- folder 656150: 1 machines
- folder 3842122: 1 machines
- folder 625040: 1 machines
- folder 625152: 1 machines
- folder 613008: 1 machines
- folder 4088509: 1 machines
- folder 4114466: 1 machines
- folder 3872949: 1 machines
- folder 607593: 1 machines
- folder 696512: 1 machines
- folder 4095118: 1 machines
- folder 3121109: 1 machines
- folder 4088528: 1 machines
- folder 594524: 1 machines
## Folder distribution (active gap machines)
- folder 3577293: 12
- folder 651577: 5
- folder 4095109: 4
- folder 2948816: 4
- folder 677399: 3
- folder 667252: 3
- folder 3426849: 3
- folder 4086884: 2
- folder 677304: 2
- folder 3638391: 2
- folder 3937024: 2
- folder 4106776: 2
- folder 3204798: 2
- folder 4100925: 2
- folder 651365: 1
- folder 4086890: 1
- folder 3842122: 1
- folder 3996026: 1
- folder 613008: 1
- folder 4088509: 1
- folder 4086846: 1
- folder 3872949: 1
- folder 607593: 1
- folder 4896982: 1
- folder 696512: 1
- folder 4086906: 1
- folder 4095118: 1
- folder 3121109: 1
- folder 4088528: 1
- folder 594524: 1
## TOTAL needing install: 114
## TOTAL active needing install: 64
**Instrumental Music Center** - 26 managed / 12 in RMM / 14 need install
- DESKTOP-JQ0D38J (folder 651577)
- DESKTOP-KRHQ5TS (folder 651365)
- DESKTOP-URV3UGR (folder 651577)
- IMC-EVENTS (folder 651577)
- IMC-L1-GRAPHICS (folder 651577)
- IMC-LUIS (folder 651577)
- IMC-M-EDSERVICE (folder 651577)
- IMC-PRINTSERVER (folder 651577)
- LAPTOP-PNVA9G51 (folder 651577)
- LAPTOP-UBTI0IE3 (folder 651577)
- PHIL (folder 651577)
- PHIL2021LAPTOP (folder 651577)
- PURCHASINGCOMP (folder 651577)
- REPAIRADMIN (folder 651577)
**Instrumental Music Center** - 6 need install (of 14 not-in-RMM; rest offline >31d)
- DESKTOP-KRHQ5TS (folder 651365, seen 2026-06-16, 17d ago)
- IMC-LUIS (folder 651577, seen 2026-07-03, 0d ago)
- IMC-M-EDSERVICE (folder 651577, seen 2026-07-01, 2d ago)
- LAPTOP-PNVA9G51 (folder 651577, seen 2026-06-30, 3d ago)
- LAPTOP-UBTI0IE3 (folder 651577, seen 2026-07-03, 0d ago)
- REPAIRADMIN (folder 651577, seen 2026-07-02, 1d ago)
**Safesite** - 26 managed / 36 in RMM / 15 need install
- 1225-LENOVO-E14 (folder 3577293)
- 1225-LENOVO-E14 (folder 3577293)
- 1225-LENOVO-E16 (folder 3577293)
- DESKTOP-2KKLG2B (folder 3577293)
- DESKTOP-8KQIDKH (folder 3577293)
- DESKTOP-ARNPE1U (folder 3577293)
- DESKTOP-B3ELJF5 (folder 3577293)
- DESKTOP-BA45FRS (folder 3577293)
- DESKTOP-EJM109L (folder 3577293)
- DESKTOP-FMDIK0Q (folder 3577293)
- DESKTOP-FUB3PAV (folder 3577293)
- DESKTOP-QAR6D04 (folder 3577293)
- DESKTOP-V3H99FC (folder 3577293)
- DESKTOP-V9F9L23 (folder 3577293)
- LAPTOP-NFB98THE (folder 3577293)
**Safesite** - 12 need install (of 15 not-in-RMM; rest offline >31d)
- 1225-LENOVO-E14 (folder 3577293, seen 2026-07-01, 2d ago)
- 1225-LENOVO-E14 (folder 3577293, seen 2026-07-01, 2d ago)
- DESKTOP-2KKLG2B (folder 3577293, seen 2026-07-03, 0d ago)
- DESKTOP-8KQIDKH (folder 3577293, seen 2026-07-03, 0d ago)
- DESKTOP-ARNPE1U (folder 3577293, seen 2026-07-02, 1d ago)
- DESKTOP-B3ELJF5 (folder 3577293, seen 2026-07-02, 1d ago)
- DESKTOP-BA45FRS (folder 3577293, seen 2026-07-03, 0d ago)
- DESKTOP-EJM109L (folder 3577293, seen 2026-07-03, 0d ago)
- DESKTOP-FUB3PAV (folder 3577293, seen 2026-07-01, 2d ago)
- DESKTOP-V3H99FC (folder 3577293, seen 2026-07-01, 2d ago)
- DESKTOP-V9F9L23 (folder 3577293, seen 2026-06-09, 24d ago)
- LAPTOP-NFB98THE (folder 3577293, seen 2026-07-01, 2d ago)
**Horseshoe Management** - 7 managed / 4 in RMM / 3 need install
- HSM-CATHY (folder 4086890)
- HSM-RANDI (folder 4086890)
- HSM-SURFACE (folder 4086890)
**Horseshoe Management** - 1 need install (of 3 not-in-RMM; rest offline >31d)
- HSM-CATHY (folder 4086890, seen 2026-07-02, 1d ago)
**Grabb & Durando Law Office** - 12 managed / 9 in RMM / 4 need install
- GND-ASUSWS (folder 4086884)
- GND-JEANNETTE (folder 4086884)
- GND-L-3 (folder 4086884)
- HOMEPC (folder 4086884)
**Grabb & Durando Law Office** - 2 need install (of 4 not-in-RMM; rest offline >31d)
- GND-ASUSWS (folder 4086884, seen 2026-07-02, 0d ago)
- GND-L-3 (folder 4086884, seen 2026-06-13, 20d ago)
**Quantum Wealth Management** - 5 managed / 4 in RMM / 1 need install
- DESKTOP-A3IVMNF (folder 656150)
**Stamback Septic** - 7 need install (of 10 not-in-RMM; rest offline >31d)
- DEREK-LAPTOP (folder 677304, seen 2026-07-03, 0d ago)
- DESKTOP-1BS5JL4 (folder 677399, seen 2026-07-03, 0d ago)
- JEREE (folder 677399, seen 2026-07-02, 1d ago)
- SERVER2 (folder 3638391, seen 2026-07-03, 0d ago)
- STAMBACK-JBECK (folder 677399, seen 2026-07-03, 0d ago)
- STAMBACK-NEW05 (folder 3638391, seen 2026-07-03, 0d ago)
- STAMBACK-NEW06 (folder 677304, seen 2026-07-03, 0d ago)
**Stamback Septic** - 10 managed / 2 in RMM / 10 need install
- DEREK-LAPTOP (folder 677304)
- DESKTOP-1BS5JL4 (folder 677399)
- DESKTOP-JVLQQIJ (folder 677399)
- JEREE (folder 677399)
- SERVER2 (folder 3638391)
- SSS-SPARE (folder 3638391)
- STAMBACK-JBECK (folder 677399)
- STAMBACK-NEW05 (folder 3638391)
- STAMBACK-NEW06 (folder 677304)
- STAMBACK-NEW06 (folder 3638391)
**Reliant Well Drilling and Pump Corporate** - 4 need install (of 16 not-in-RMM; rest offline >31d)
- Clarks iMac (folder 4095109, seen 2026-06-10, 23d ago)
- RWD-ALLENDESKTO (folder 4095109, seen 2026-06-16, 17d ago)
- RWD-CHRIS (folder 4095109, seen 2026-07-02, 1d ago)
- WILLCOXDOTADMIN (folder 4095109, seen 2026-07-02, 1d ago)
**Reliant Well Drilling and Pump Corporate** - 17 managed / 1 in RMM / 16 need install
- Clarks iMac (folder 4095109)
- DESKTOP-09H7T66 (folder 4095109)
- DESKTOP-QIGH458 (folder 4095109)
- DESKTOP-V2247T9 (folder 4095109)
- LAPTOP-8AUEP9N6 (folder 4095109)
- LAPTOP-EJL9PFOU (folder 4095109)
- LAPTOP-FR4QN9KF (folder 4095109)
- LAPTOP-JQMU8N9K (folder 4095109)
- RELIANT-L01 (folder 4095109)
- RELIANT-L02 (folder 4095109)
- RELIANT-L03 (folder 4095109)
- RWD-ALANLAPTOP (folder 4095109)
- RWD-ALLENDESKTO (folder 4095109)
- RWD-CHRIS (folder 4095109)
- WILCOXADMIN (folder 4095109)
- WILLCOXDOTADMIN (folder 4095109)
**Zeus Nestora** - 5 need install (of 5 not-in-RMM; rest offline >31d)
- SERVER-OLD (folder 3842122, seen 2026-07-03, 0d ago)
- WHITE-PC (folder 2948816, seen 2026-07-03, 0d ago)
- ZEUS-ACCOUNTING (folder 2948816, seen 2026-07-03, 0d ago)
- ZEUS-SHERRI (folder 2948816, seen 2026-07-03, 0d ago)
- ZEUS1 (folder 2948816, seen 2026-07-03, 0d ago)
**Zeus Nestora** - 6 managed / 2 in RMM / 5 need install
- SERVER-OLD (folder 3842122)
- WHITE-PC (folder 2948816)
- ZEUS-ACCOUNTING (folder 2948816)
- ZEUS-SHERRI (folder 2948816)
- ZEUS1 (folder 2948816)
**PUTT LAND SURVEYING, INC.** - 1 need install (of 5 not-in-RMM; rest offline >31d)
- PLS-SERVER (folder 3996026, seen 2026-06-26, 7d ago)
**Little Hearts Little Hands** - 2 managed / 0 in RMM / 2 need install
- LHLH (folder 625040)
- WIN-KNVO6MUMMEM (folder 625152)
**Curtis Plumbing** - 2 need install (of 3 not-in-RMM; rest offline >31d)
- CP-QB (folder 613008, seen 2026-07-03, 0d ago)
- CURTIS-002-W7 (folder 4088509, seen 2026-07-03, 0d ago)
**PUTT LAND SURVEYING, INC.** - 7 managed / 2 in RMM / 5 need install
- PLS-FOUR (folder 3996026)
- PLS-FRONT (folder 3996026)
- PLS-LAPTOP (folder 3996026)
- PLS-ONE (folder 3996026)
- PLS-SERVER (folder 3996026)
**The Prairie Schooner** - 2 need install (of 4 not-in-RMM; rest offline >31d)
- MEL-PC (folder 4086846, seen 2026-07-03, 0d ago)
- TPS-SVR (folder 3872949, seen 2026-07-03, 0d ago)
**Curtis Plumbing** - 4 managed / 3 in RMM / 3 need install
- CP-QB (folder 613008)
- CURTIS-002-W7 (folder 4088509)
- CURTIS-003 (folder 4114466)
**Mineralogical Record** - 3 need install (of 5 not-in-RMM; rest offline >31d)
- CHRISTIPC2024 (folder 607593, seen 2026-07-03, 0d ago)
- DESKTOP-ERBA22G (folder 3937024, seen 2026-07-03, 0d ago)
- PUGET-CW (folder 3937024, seen 2026-07-03, 0d ago)
**The Prairie Schooner** - 6 managed / 2 in RMM / 4 need install
- DESKTOP-SRUOH4R (folder 4086846)
- DESKTOP-TS1P9MT (folder 4086846)
- MEL-PC (folder 4086846)
- TPS-SVR (folder 3872949)
**Ridgetop Group** - 3 need install (of 3 not-in-RMM; rest offline >31d)
- CNX-LAB-00 (folder 667252, seen 2026-07-03, 0d ago)
- RGI-DC (folder 667252, seen 2026-07-03, 0d ago)
- RTG-HOST01 (folder 667252, seen 2026-07-03, 0d ago)
**Mineralogical Record** - 6 managed / 2 in RMM / 5 need install
- CHRISTIPC2024 (folder 607593)
- DESKTOP-3VPT017 (folder 3937024)
- DESKTOP-9QHSCIT (folder 3937024)
- DESKTOP-ERBA22G (folder 3937024)
- PUGET-CW (folder 3937024)
**Multicultural Counseling Center** - 1 need install (of 2 not-in-RMM; rest offline >31d)
- DESKTOP-CLJKB39 (folder 4896982, seen 2026-06-20, 13d ago)
**MVAN Enterprises Inc** - 4 managed / 0 in RMM / 4 need install
- CPC-chris-UZR6E (folder 3242716)
- DESKTOP-I7504C5 (folder 3242716)
- Junes MacBook Pro (folder 3242716)
- MITCH-LAPTOP (folder 3242716)
**Brett Interiors** - 3 need install (of 3 not-in-RMM; rest offline >31d)
- BRETTWAREHOUSE (folder 4106776, seen 2026-07-03, 0d ago)
- DESKTOP-6LL5T6B (folder 4106776, seen 2026-07-03, 0d ago)
- SERVER (folder 696512, seen 2026-07-03, 0d ago)
**Ridgetop Group** - 3 managed / 0 in RMM / 3 need install
- CNX-LAB-00 (folder 667252)
- RGI-DC (folder 667252)
- RTG-HOST01 (folder 667252)
**Heieck, Sheila** - 3 need install (of 3 not-in-RMM; rest offline >31d)
- John Heiecks iMac (folder 3426849, seen 2026-07-03, 0d ago)
- Sheila's iMac (folder 3426849, seen 2026-07-03, 0d ago)
- Sheilas MacBook Pro (folder 3426849, seen 2026-07-03, 0d ago)
**Multicultural Counseling Center** - 3 managed / 1 in RMM / 2 need install
- DESKTOP-CLJKB39 (folder 4896982)
- DESKTOP-S1HPLDF (folder 4896982)
**The Marc Group** - 1 need install (of 2 not-in-RMM; rest offline >31d)
- DESKTOP-6HT5SJ9 (folder 4086906, seen 2026-07-03, 0d ago)
**Brett Interiors** - 5 managed / 2 in RMM / 3 need install
- BRETTWAREHOUSE (folder 4106776)
- DESKTOP-6LL5T6B (folder 4106776)
- SERVER (folder 696512)
**Business Services of Tucson LLC** - 2 need install (of 2 not-in-RMM; rest offline >31d)
- KAT (folder 3204798, seen 2026-06-03, 30d ago)
- KAT1 (folder 3204798, seen 2026-07-03, 0d ago)
**Heieck, Sheila** - 3 managed / 0 in RMM / 3 need install
- John Heiecks iMac (folder 3426849)
- Sheila's iMac (folder 3426849)
- Sheilas MacBook Pro (folder 3426849)
**Pro-Tech Services** - 2 need install (of 2 not-in-RMM; rest offline >31d)
- DESKTOP-EKC9PRV (folder 4100925, seen 2026-07-03, 0d ago)
- LAPTOP-73UDDTTK (folder 4100925, seen 2026-07-02, 1d ago)
**The Marc Group** - 2 managed / 0 in RMM / 2 need install
- DESKTOP-6HT5SJ9 (folder 4086906)
- LAPTOP-JMUNGO (folder 4086906)
**Inside Track Productions** - 1 need install (of 1 not-in-RMM; rest offline >31d)
- DESKTOP-3ST7GFD (folder 4095118, seen 2026-07-03, 0d ago)
**Bill Tedards** - 2 managed / 0 in RMM / 2 need install
- DESKTOP-SUFJR0J (folder 615472)
- TEDARDSLAPTOP (folder 615472)
**Gary A Hartman LLC** - 1 need install (of 1 not-in-RMM; rest offline >31d)
- DESKTOP-EVA4H1A (folder 3121109, seen 2026-07-03, 0d ago)
**Business Services of Tucson LLC** - 2 managed / 0 in RMM / 2 need install
- KAT (folder 3204798)
- KAT1 (folder 3204798)
**Robyn Pittman** - 1 need install (of 1 not-in-RMM; rest offline >31d)
- DESKTOP-PL2RCGL (folder 4088528, seen 2026-07-03, 0d ago)
**Pro-Tech Services** - 2 managed / 0 in RMM / 2 need install
- DESKTOP-EKC9PRV (folder 4100925)
- LAPTOP-73UDDTTK (folder 4100925)
**Inside Track Productions** - 1 managed / 0 in RMM / 1 need install
- DESKTOP-3ST7GFD (folder 4095118)
**Gary A Hartman LLC** - 1 managed / 0 in RMM / 1 need install
- DESKTOP-EVA4H1A (folder 3121109)
**Robyn Pittman** - 1 managed / 0 in RMM / 1 need install
- DESKTOP-PL2RCGL (folder 4088528)
**Marty Ryan** - 1 managed / 0 in RMM / 1 need install
- DESKTOP-OC2PH4I (folder 594524)
**Marty Ryan** - 1 need install (of 1 not-in-RMM; rest offline >31d)
- DESKTOP-OC2PH4I (folder 594524, seen 2026-07-03, 0d ago)

View File

@@ -115,3 +115,11 @@ Policy finding: Syncro public REST API does NOT expose policy management (GET /p
Also: the Syncro-stored ScreenConnect GUID on assets is stale (send-command HTTP 500 / session lookup null) - that's why by-name SC lookup missed these machines.
Friction logged: curl inside while-read loop steals loop stdin (fix: </dev/null); Python open(...,'w') defaults to cp1252 on Windows (fix: encoding='utf-8').
## Update: 18:45 PT — active-only needs-install list + SC policy pushed
Added a recency filter to needs-sc.py using kabuto_information.last_synced_at (updated_at is just the record touch, not the agent check-in). Filtered the missing-machine list to only those seen in Syncro within the last 31 days: 114 -> 64 active (50 excluded as offline >31d). Each entry now shows policy_folder_id + last-seen date + days-ago. Sent the 64-machine active list to Howard in Discord (4 chunks). Regenerate anytime: MAXDAYS=<n> SK=.. RMM=.. TOK=.. py needs-sc.py.
Howard pushed a Syncro policy that installs ScreenConnect on the machines as they come online; some may install already, remainder tracked daily. NOTE: SC install alone does not install GuruRMM - after SC lands, GuruRMM still must be pushed via SC (our channel), unless the Syncro policy also runs the GuruRMM one-liner.
Next step (agreed, not yet done): close the loop - upgrade the daily GPS-RMM-Progress job to auto-push GuruRMM to needs-install machines once they have a live SC session (or add the GuruRMM one-liner to the Syncro SC policy). Billing findings to Winter/Mike remain HELD (do not send yet, per Howard).

View File

@@ -1,17 +1,26 @@
import json, urllib.request, ssl, os
import json, urllib.request, ssl, os, datetime
from collections import Counter
BASE="https://computerguru.syncromsp.com/api/v1"
SK=os.environ["SK"]; RMM=os.environ["RMM"]; TOK=os.environ["TOK"]
MAXDAYS=int(os.environ.get("MAXDAYS","31"))
ctx=ssl.create_default_context()
def get(url,hdr=None):
return urllib.request.urlopen(urllib.request.Request(url,headers=hdr or {}),context=ctx,timeout=30).read()
def clean(b): return bytes(c for c in b if c>=32 or c in (9,10,13))
now=datetime.datetime.now()
def lastseen(a):
ki=(a.get("properties") or {}).get("kabuto_information") or {}
ts=ki.get("last_synced_at")
if not ts: return None,None
try: d=datetime.datetime.strptime(ts[:19],"%Y-%m-%dT%H:%M:%S")
except Exception: return None,None
return d,(now-d).days
agents=json.loads(clean(get(f"{RMM}/api/agents",{"Authorization":f"Bearer {TOK}"})))
by_client={}
for a in agents:
by_client.setdefault(a.get("client_name") or "",set()).add((a.get("hostname") or "").lower())
tgts=json.load(open("projects/gps-rmm-audit/targets.json"))["clients"]
folder_ctr=Counter(); body=[]; total=0
folder_ctr=Counter(); body=[]; total=0; stale=0; unknown=0
for t in tgts:
c=t["client"]; cid=t["cid"]
try: data=json.loads(clean(get(f"{BASE}/customer_assets?customer_id={cid}&per_page=100&api_key={SK}")))
@@ -19,21 +28,26 @@ for t in tgts:
body.append(f"**{c}** - ERROR: {e}\n"); continue
dev=[a for a in data.get("assets",[]) if a.get("asset_type")=="Syncro Device" and a.get("name")]
rmm=by_client.get(c,set())
gap=sorted([a for a in dev if a["name"].lower() not in rmm], key=lambda a:a["name"].lower())
if not gap: continue
total+=len(gap)
body.append(f"**{c}** - {len(dev)} managed / {len(rmm)} in RMM / {len(gap)} need install")
gap=[a for a in dev if a["name"].lower() not in rmm]
keep=[]
for a in gap:
f=a.get("policy_folder_id") or "-"
folder_ctr[str(f)]+=1
body.append(f" - {a['name']} (folder {f})")
d,days=lastseen(a)
if d is None: unknown+=1; continue # no check-in data -> exclude
if days>MAXDAYS: stale+=1; continue # offline > MAXDAYS -> exclude
keep.append((a,d,days))
if not keep: continue
keep.sort(key=lambda x:x[0]["name"].lower())
total+=len(keep)
body.append(f"**{c}** - {len(keep)} need install (of {len(gap)} not-in-RMM; rest offline >{MAXDAYS}d)")
for a,d,days in keep:
f=a.get("policy_folder_id") or "-"; folder_ctr[str(f)]+=1
body.append(f" - {a['name']} (folder {f}, seen {d.strftime('%Y-%m-%d')}, {days}d ago)")
body.append("")
out=["# GPS clients - Syncro-managed machines NOT in GuruRMM","",
"Install ScreenConnect / push agent. Syncro assets (authoritative) vs live GuruRMM, 2026-07-03.",
"`folder N` = Syncro policy_folder_id (the ScreenConnect-install policy is tied to a folder - devices in the wrong folder don't get SC).","",
"## Folder distribution across the gap machines (spot the SC-install folder vs outliers)"]
for f,n in folder_ctr.most_common():
out.append(f"- folder {f}: {n} machines")
out+=["",f"## TOTAL needing install: {total}",""]+body
out=["# GPS clients - Syncro-managed machines NOT in GuruRMM (ACTIVE only)","",
f"Machines missing from GuruRMM that checked into Syncro within the last {MAXDAYS} days. Excluded: {stale} offline >{MAXDAYS}d, {unknown} with no check-in data. Snapshot 2026-07-03.",
"`folder N` = Syncro policy_folder_id.","",
"## Folder distribution (active gap machines)"]
for f,n in folder_ctr.most_common(): out.append(f"- folder {f}: {n}")
out+=["",f"## TOTAL active needing install: {total}",""]+body
open("projects/gps-rmm-audit/needs-screenconnect.md","w",encoding="utf-8").write("\n".join(out))
print(f"total={total}, folders={dict(folder_ctr)}")
print(f"active={total} excluded_stale={stale} excluded_unknown={unknown}")