mirror of
https://github.com/itsdave-de/msp.git
synced 2026-08-14 07:30:05 -03:00
4.5 KiB
4.5 KiB
TacticalRMM API Zugriff
RMM Instanz
Name: RMMINST-Default (Migrated from MSP Settings)
API URL: https://api.itsdave.de
API Key: VXHWE1ZNNWVYRRU3SYCAJ80CZM9NRFP5
Credentials aus Frappe abrufen
import frappe
rmm = frappe.get_doc("RMM Instance", "RMMINST-Default (Migrated from MSP Settings)")
api_url, headers, verify = rmm.get_api_credentials()
# api_url = "https://api.itsdave.de"
# headers = {"X-API-KEY": "..."}
API Endpoints
Agents
# Alle Agents abrufen
curl -s "https://api.itsdave.de/agents/" \
-H "X-API-KEY: VXHWE1ZNNWVYRRU3SYCAJ80CZM9NRFP5"
# Agent Details
curl -s "https://api.itsdave.de/agents/{agent_id}/" \
-H "X-API-KEY: VXHWE1ZNNWVYRRU3SYCAJ80CZM9NRFP5"
Scripts
# Alle Scripts auflisten
curl -s "https://api.itsdave.de/scripts/" \
-H "X-API-KEY: VXHWE1ZNNWVYRRU3SYCAJ80CZM9NRFP5"
# Script Details
curl -s "https://api.itsdave.de/scripts/{script_id}/" \
-H "X-API-KEY: VXHWE1ZNNWVYRRU3SYCAJ80CZM9NRFP5"
Script erstellen
# Script Content escapen
SCRIPT_CONTENT=$(cat mein_script.ps1 | python3 -c "import sys, json; print(json.dumps(sys.stdin.read()))")
# Script hochladen
curl -s -X POST "https://api.itsdave.de/scripts/" \
-H "X-API-KEY: VXHWE1ZNNWVYRRU3SYCAJ80CZM9NRFP5" \
-H "Content-Type: application/json" \
-d "{
\"name\": \"MSP - Mein Script\",
\"description\": \"Beschreibung des Scripts\",
\"shell\": \"powershell\",
\"category\": \"MSP\",
\"supported_platforms\": [\"windows\"],
\"script_body\": ${SCRIPT_CONTENT},
\"default_timeout\": 120
}"
Script auf Agent ausführen
WICHTIG: Das Feld run_on_server muss explizit auf false gesetzt werden!
curl -s -X POST "https://api.itsdave.de/agents/{agent_id}/runscript/" \
-H "X-API-KEY: VXHWE1ZNNWVYRRU3SYCAJ80CZM9NRFP5" \
-H "Content-Type: application/json" \
-d '{
"output": "wait",
"emails": [],
"emailMode": "default",
"custom_field": null,
"save_all_output": false,
"script": 154,
"args": [],
"env_vars": [],
"timeout": 120,
"run_as_user": false,
"run_on_server": false
}'
Output-Modi:
"wait"- Wartet auf Ergebnis und gibt es zurück"forget"- Führt aus ohne auf Ergebnis zu warten"email"- Sendet Ergebnis per E-Mail
Windows Updates
# Patches für Agent abrufen
curl -s "https://api.itsdave.de/winupdate/{agent_id}/" \
-H "X-API-KEY: VXHWE1ZNNWVYRRU3SYCAJ80CZM9NRFP5"
# Update-Scan starten
curl -s -X POST "https://api.itsdave.de/winupdate/{agent_id}/scan/" \
-H "X-API-KEY: VXHWE1ZNNWVYRRU3SYCAJ80CZM9NRFP5"
# Approved Updates installieren
curl -s -X POST "https://api.itsdave.de/winupdate/{agent_id}/install/" \
-H "X-API-KEY: VXHWE1ZNNWVYRRU3SYCAJ80CZM9NRFP5"
Python Beispiel
import requests
import json
API_URL = "https://api.itsdave.de"
API_KEY = "VXHWE1ZNNWVYRRU3SYCAJ80CZM9NRFP5"
headers = {"X-API-KEY": API_KEY, "Content-Type": "application/json"}
def run_script(agent_id, script_id, timeout=120):
"""Führt ein Script auf einem Agent aus und gibt das Ergebnis zurück."""
payload = {
"output": "wait",
"emails": [],
"emailMode": "default",
"custom_field": None,
"save_all_output": False,
"script": script_id,
"args": [],
"env_vars": [],
"timeout": timeout,
"run_as_user": False,
"run_on_server": False # WICHTIG!
}
r = requests.post(
f"{API_URL}/agents/{agent_id}/runscript/",
headers=headers,
json=payload,
timeout=timeout + 30
)
if r.status_code == 200:
return json.loads(r.json()) # Doppeltes JSON-Parsing nötig
else:
raise Exception(f"API Error {r.status_code}: {r.text}")
# Beispiel: Windows Update Diagnostics auf CWWS12
result = run_script(
agent_id="HTTlEmzqhqGyRNISuTeOMcKWcPEaATdZiSdWcwTR",
script_id=154
)
print(f"Status: {result['status']}")
print(f"Issues: {result['issues']}")
MSP Scripts in TacticalRMM
| ID | Name | Beschreibung |
|---|---|---|
| 153 | MSP - Windows Update Diagnostics | Text-Ausgabe für manuelle Analyse |
| 154 | MSP - Windows Update Diagnostics JSON | JSON-Ausgabe für programmatische Verarbeitung |
Bekannte Probleme
- 500 Fehler bei Script-Ausführung: Prüfen ob
run_on_server: falsegesetzt ist - Leere Antwort: Agent ist möglicherweise offline
- Timeout: Script-Timeout + 30 Sekunden für Request-Timeout verwenden
Swagger UI
API-Dokumentation verfügbar unter:
https://api.itsdave.de/api/schema/swagger-ui/