sync: auto-sync from HOWARD-HOME at 2026-07-03 19:57:06

Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-07-03 19:57:06
This commit is contained in:
2026-07-03 19:57:32 -07:00
parent 63e1eb743b
commit f61088dac4
4 changed files with 267 additions and 0 deletions

View File

@@ -19,6 +19,12 @@ Categories (the `[type]` tag): _(none)_ = skill/command execution failure ·
<!-- Append entries below this line -->
2026-07-04 | Howard-Home | python/windows | [friction] open(path,'w') defaults to cp1252 on Windows so em-dash/smart-quotes wrote as invalid UTF-8 (0x97), later decode failed; fix: open(...,encoding='utf-8')
2026-07-04 | Howard-Home | bash/env | [friction] curl inside a while-read loop steals the loop's stdin -> returns empty/partial; fix: add </dev/null to the curl (or read from a file, or use python)
2026-07-04 | Howard-Home | screenconnect | ScreenConnect API error [SendCommandToSession]: HTTP 500: {"errorType":"","message":"An session manager fault error occurred while processing your request. Please contact support if the problem persists."} [ctx: cmd=send-command]
2026-07-03 | GURU-5070 | agy/gemini-cli | old gemini npm CLI dead on this account: throwIneligibleOrProjectIdError (needs GOOGLE_CLOUD_PROJECT); replaced by Antigravity 'agy' binary [ctx: fix=rewired-to-agy]
2026-07-03 | GURU-5070 | grok | grok returned no text [ctx: mode=text stopReason=Cancelled]

View File

@@ -0,0 +1,210 @@
# 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)
- 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
## TOTAL needing install: 114
**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)
**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)
**Horseshoe Management** - 7 managed / 4 in RMM / 3 need install
- HSM-CATHY (folder 4086890)
- HSM-RANDI (folder 4086890)
- HSM-SURFACE (folder 4086890)
**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)
**Quantum Wealth Management** - 5 managed / 4 in RMM / 1 need install
- DESKTOP-A3IVMNF (folder 656150)
**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** - 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** - 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)
**Little Hearts Little Hands** - 2 managed / 0 in RMM / 2 need install
- LHLH (folder 625040)
- WIN-KNVO6MUMMEM (folder 625152)
**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)
**Curtis Plumbing** - 4 managed / 3 in RMM / 3 need install
- CP-QB (folder 613008)
- CURTIS-002-W7 (folder 4088509)
- CURTIS-003 (folder 4114466)
**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)
**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)
**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)
**Ridgetop Group** - 3 managed / 0 in RMM / 3 need install
- CNX-LAB-00 (folder 667252)
- RGI-DC (folder 667252)
- RTG-HOST01 (folder 667252)
**Multicultural Counseling Center** - 3 managed / 1 in RMM / 2 need install
- DESKTOP-CLJKB39 (folder 4896982)
- DESKTOP-S1HPLDF (folder 4896982)
**Brett Interiors** - 5 managed / 2 in RMM / 3 need install
- BRETTWAREHOUSE (folder 4106776)
- DESKTOP-6LL5T6B (folder 4106776)
- SERVER (folder 696512)
**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)
**The Marc Group** - 2 managed / 0 in RMM / 2 need install
- DESKTOP-6HT5SJ9 (folder 4086906)
- LAPTOP-JMUNGO (folder 4086906)
**Bill Tedards** - 2 managed / 0 in RMM / 2 need install
- DESKTOP-SUFJR0J (folder 615472)
- TEDARDSLAPTOP (folder 615472)
**Business Services of Tucson LLC** - 2 managed / 0 in RMM / 2 need install
- KAT (folder 3204798)
- KAT1 (folder 3204798)
**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)

View File

@@ -103,3 +103,15 @@ Discovery source = Bitdefender company, falling back to Datto EDR where BD is em
Not onboarded (no BD/Datto machines found - come-back to locate or confirm unmanaged): Little Hearts, Janet Altschuler, Business Services of Tucson, Andy's Mobile Fuel, Gary A Hartman LLC, Marty Ryan, Residential and Renovation Engineering, Ridgetop Group, Robyn Pittman.
Reliant caveat: its BD company mixes Reliant + Farwest (FW*) + Wilcox (WILCOX*) - only Reliant machines targeted.
## Update: 18:20 PT — Syncro authoritative reconciliation + needs-ScreenConnect list
Pivoted the missing-machine discovery to Syncro assets (the authoritative managed-device inventory) instead of Bitdefender/Datto. Every "no-SC" machine is a live Syncro Device asset. Built projects/gps-rmm-audit/tools/needs-sc.py (Python - avoids bash while-read/stdin + Windows cp1252 gotchas) which reconciles Syncro assets vs live GuruRMM agents per GPS client and writes projects/gps-rmm-audit/needs-screenconnect.md.
Result: 114 Syncro-managed machines are not in GuruRMM. List sent to Howard in Discord (3 chunks) and includes each machine's policy_folder_id.
Policy finding: Syncro public REST API does NOT expose policy management (GET /policies = 404); RMM policy/ScreenConnect-install-policy work is Syncro-console-only. Assets carry policy_folder_id (folders are largely per-client, ~37 distinct across the gap). Path forward = in the Syncro console, put the gap devices under the ScreenConnect-install policy folder (or add the GuruRMM one-liner to that policy); Syncro reaches 100% of managed devices, solving the no-SC/no-footprint gap the ScreenConnect-only channel couldn't. Several gap entries are Macs (need macOS agent, not the Windows one).
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').

View File

@@ -0,0 +1,39 @@
import json, urllib.request, ssl, os
from collections import Counter
BASE="https://computerguru.syncromsp.com/api/v1"
SK=os.environ["SK"]; RMM=os.environ["RMM"]; TOK=os.environ["TOK"]
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))
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
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}")))
except Exception as e:
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")
for a in gap:
f=a.get("policy_folder_id") or "-"
folder_ctr[str(f)]+=1
body.append(f" - {a['name']} (folder {f})")
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
open("projects/gps-rmm-audit/needs-screenconnect.md","w",encoding="utf-8").write("\n".join(out))
print(f"total={total}, folders={dict(folder_ctr)}")