no way to compare when less than two revisions
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| — | de:2.0:cli:usage [2026/08/23 00:27] (aktuell) – angelegt kainhofer | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Admidio-Kommandozeilenschnittstelle ====== | ||
| + | |||
| + | Die Admidio-Kommandozeilenschnittstelle (CLI) stellt eine skriptfähige Administrationsschnittstelle bereit, über die Admidio direkt aus einer Shell verwaltet werden kann. | ||
| + | |||
| + | Die ausführbare Datei liegt im obersten Admidio-Verzeichnis und heißt '' | ||
| + | <code bash> | ||
| + | www-data@server.example.com: | ||
| + | Organization: | ||
| + | Filesystem: | ||
| + | Database: | ||
| + | Update step: 620 | ||
| + | Status: | ||
| + | </ | ||
| + | |||
| + | |||
| + | Die CLI verwendet dieselben Admidio-Entities, | ||
| + | |||
| + | Typische Anwendungsfälle sind: | ||
| + | |||
| + | * Admidio-Version, | ||
| + | * Admidio ohne browserbasierten Installer installieren; | ||
| + | * Organisationseinstellungen lesen und ändern; | ||
| + | * Benutzer, Gruppen, Mitgliedschaften, | ||
| + | * Registrierungen, | ||
| + | * Kategorien, Menüeinträge, | ||
| + | * Inventardaten importieren, | ||
| + | * Veranstaltungen und Räume pflegen; | ||
| + | * mit Dokumenten, Dateien und Fotoalben arbeiten; | ||
| + | * Changelog- und Kategorieauswertungsdaten anzeigen; | ||
| + | * Plugins, SSO-Clients und SSO-Schlüssel administrieren; | ||
| + | * Sessions und Auto-Login-Daten ungültig machen bzw. bereinigen; | ||
| + | * Datenbanksicherungen erstellen und Wartungsoperationen ausführen; | ||
| + | * Admidio aus Wartungsskripten, | ||
| + | * andere Anwendungen über eine skriptfähige Administrationsschnittstelle an Admidio anbinden. | ||
| + | |||
| + | Die genaue Liste der Befehle, Argumente und befehlsspezifischen Optionen steht in der [[en: | ||
| + | |||
| + | Entwickler, die einem Admidio-Modul zusätzliche CLI-Befehle hinzufügen möchten, finden weitere Informationen unter [[de: | ||
| + | |||
| + | ===== Voraussetzungen und Bootstrap ===== | ||
| + | |||
| + | Die meisten Befehle arbeiten mit einer vorhandenen Admidio-Installation. Dafür werden benötigt: | ||
| + | |||
| + | * eine installierte Admidio-Instanz; | ||
| + | * PHP CLI; | ||
| + | * die PHP-Erweiterungen, | ||
| + | * Dateisystemzugriff auf das Admidio-Verzeichnis und '' | ||
| + | * Zugriff auf die konfigurierte Admidio-Datenbank. | ||
| + | |||
| + | Die CLI startet keine Browser-Session und benötigt keinen Webserver-Request. | ||
| + | |||
| + | Ein kleiner Satz von Befehlen steht absichtlich schon vor der Installation von Admidio zur Verfügung. Dadurch kann eine neue Installation vollständig über die Kommandozeile geprüft und angelegt werden: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio help | ||
| + | ./admidio list | ||
| + | ./admidio completion | ||
| + | ./admidio cli: | ||
| + | ./admidio install: | ||
| + | ./admidio install:run ... | ||
| + | </ | ||
| + | |||
| + | Die Beispiele auf dieser Seite gehen davon aus, dass das aktuelle Verzeichnis das Admidio-Installationsverzeichnis ist. | ||
| + | |||
| + | ===== CLI starten ===== | ||
| + | |||
| + | Unter Linux und anderen Unix-ähnlichen Systemen kann das Skript ausführbar gemacht werden: | ||
| + | |||
| + | <code bash> | ||
| + | chmod +x admidio | ||
| + | ./admidio version | ||
| + | </ | ||
| + | |||
| + | Es kann auch immer ausdrücklich über PHP gestartet werden: | ||
| + | |||
| + | <code bash> | ||
| + | php ./admidio version | ||
| + | </ | ||
| + | |||
| + | Unter Windows wird die PHP-Executable verwendet: | ||
| + | |||
| + | <code powershell> | ||
| + | php .\admidio version | ||
| + | </ | ||
| + | |||
| + | Der Befehl kann auch mit einem absoluten Pfad aufgerufen werden. Für Cronjobs und andere Automatisierungen wird das empfohlen: | ||
| + | |||
| + | <code bash> | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | ===== Allgemeine Syntax ===== | ||
| + | |||
| + | Die allgemeine Syntax lautet: | ||
| + | |||
| + | < | ||
| + | admidio [global-options] COMMAND [arguments] [options] | ||
| + | </ | ||
| + | |||
| + | Beispiel: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio user:show john.doe --as=administrator --format=json | ||
| + | </ | ||
| + | |||
| + | Ein Befehl besteht entweder aus einem einfachen Namen wie: | ||
| + | |||
| + | < | ||
| + | version | ||
| + | status | ||
| + | help | ||
| + | list | ||
| + | completion | ||
| + | </ | ||
| + | |||
| + | oder aus Namespace und Aufgabe: | ||
| + | |||
| + | < | ||
| + | user:add | ||
| + | group: | ||
| + | inventory: | ||
| + | sso:list | ||
| + | </ | ||
| + | |||
| + | Globale Optionen können vor oder nach dem Befehl stehen. Befehlsspezifische Optionen müssen nach dem Befehl stehen, weil die CLI sie erst kennt, nachdem der Befehl ermittelt wurde. | ||
| + | |||
| + | Beide Schreibweisen sind gültig: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio --organization=club user:list --as=administrator --format=json | ||
| + | ./admidio user:list --organization=club --as=administrator --format=json | ||
| + | </ | ||
| + | |||
| + | Lange Optionen mit Wert akzeptieren sowohl '' | ||
| + | |||
| + | Der Trenner '' | ||
| + | |||
| + | ===== Hilfe anzeigen ===== | ||
| + | |||
| + | Allgemeine Verwendung, globale Optionen und Exit-Codes anzeigen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio help | ||
| + | </ | ||
| + | |||
| + | Die folgenden Kurzformen sind gleichwertig: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio --help | ||
| + | ./admidio -h | ||
| + | </ | ||
| + | |||
| + | Alle registrierten Befehle auflisten: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio list | ||
| + | </ | ||
| + | |||
| + | Befehle eines Namespaces können separat aufgelistet werden: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio list user | ||
| + | ./admidio list inventory | ||
| + | ./admidio list sso | ||
| + | </ | ||
| + | |||
| + | Die Liste zeigt außerdem, ob ein Befehl ein Alias ist und ob er aktuell verfügbar ist. | ||
| + | |||
| + | Dokumentation für einen bestimmten Befehl anzeigen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio help group: | ||
| + | </ | ||
| + | |||
| + | Alternativ: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio group: | ||
| + | ./admidio group: | ||
| + | </ | ||
| + | |||
| + | Namespaces und Tasks in der Registry anzeigen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio module:list | ||
| + | ./admidio module: | ||
| + | ./admidio module: | ||
| + | </ | ||
| + | |||
| + | Die vollständige, | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio help --all | ||
| + | </ | ||
| + | |||
| + | Sie kann direkt als Markdown, DokuWiki oder JSON gerendert werden: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio help --all --format=md | ||
| + | ./admidio help --all --format=dokuwiki | ||
| + | ./admidio help --all --format=json | ||
| + | </ | ||
| + | |||
| + | Die [[en: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio help --all --format=dokuwiki --output=cli-commands.txt | ||
| + | </ | ||
| + | |||
| + | Damit entspricht die generierte Seite der installierten Admidio-Version und enthält auch Befehle, die von Modulen registriert werden. | ||
| + | |||
| + | **Aktuelle Einschränkung: | ||
| + | |||
| + | ===== Globale Optionen ===== | ||
| + | |||
| + | Die folgenden Optionen steuern die CLI selbst. | ||
| + | |||
| + | ^ Option ^ Beschreibung ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | Nicht jede globale Ausgabeoption hat bei jedem Befehl eine sinnvolle Wirkung. Für Skripte sollte immer '' | ||
| + | |||
| + | ===== Ausführender Benutzer und Berechtigungen ===== | ||
| + | |||
| + | Viele Befehle benötigen einen ausführenden Admidio-Benutzer: | ||
| + | |||
| + | < | ||
| + | --as=USER | ||
| + | </ | ||
| + | |||
| + | '' | ||
| + | |||
| + | Beispiel: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio user:list --as=administrator | ||
| + | </ | ||
| + | |||
| + | **Wichtig: | ||
| + | |||
| + | Die CLI ist eine lokale Administrationsschnittstelle. Eine Person oder ein Service-Account, | ||
| + | |||
| + | Das ausgewählte Admidio-Konto muss trotzdem verwendbar sein. Ein ausführender Benutzer muss: | ||
| + | |||
| + | * aktiviert sein; | ||
| + | * aktives Mitglied der aktuellen Organisation sein. | ||
| + | |||
| + | Danach wendet Admidio das normale Berechtigungsmodell auf den Befehl an. Die genaue Prüfung hängt von der Operation ab: | ||
| + | |||
| + | * Nur-lesende Befehle können verlangen, dass die zugehörige Komponente sichtbar ist, und wenden anschließend die normalen Sichtbarkeitsregeln auf Datensatzebene an; | ||
| + | * ändernde Befehle erfordern normalerweise Administrationsrechte für die zugehörige Komponente; | ||
| + | * einige Befehle verwenden speziellere Gruppen-/ | ||
| + | * einige Operationen benötigen zusätzlich einen vollständigen Admidio-Administrator. | ||
| + | |||
| + | Zusätzliche deklarierte Anforderungen stehen gegebenenfalls in der befehlsspezifischen Hilfe. | ||
| + | |||
| + | Der ausführende Benutzer wird außerdem zum aktuellen Admidio-Benutzer für die normale Entity- und Changelog-Verarbeitung. CLI-Änderungen werden mit einem Ursprung wie diesem gekennzeichnet: | ||
| + | |||
| + | < | ||
| + | CLI: group: | ||
| + | </ | ||
| + | |||
| + | Verwende eine Administratoridentität nicht unnötig. Für automatisierte Aufgaben sollte ein aktiviertes Admidio-Konto mit genau den benötigten Rechten verwendet werden. | ||
| + | |||
| + | ===== Organisation auswählen ===== | ||
| + | |||
| + | Bei Installationen mit mehreren Organisationen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio --organization=club-a user:list --as=administrator | ||
| + | </ | ||
| + | |||
| + | Der Wert ist der Admidio-Kurzname der Organisation. | ||
| + | |||
| + | Die Option ändert den Organisationskontext, | ||
| + | |||
| + | Der mit '' | ||
| + | |||
| + | ===== Hostabhängige Konfigurationen ===== | ||
| + | |||
| + | Einige Installationen verwenden '' | ||
| + | |||
| + | Beim Start der CLI gibt es keinen HTTP-Request. Der gewünschte Host kann deshalb ausdrücklich angegeben werden: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio --host=members.example.org status | ||
| + | </ | ||
| + | |||
| + | Derselbe Wert kann über die Umgebungsvariable '' | ||
| + | |||
| + | <code bash> | ||
| + | export ADMIDIO_HOST=members.example.org | ||
| + | ./admidio status | ||
| + | </ | ||
| + | |||
| + | Der Wert muss ein Hostname sein und darf optional einen Port enthalten, zum Beispiel: | ||
| + | |||
| + | < | ||
| + | members.example.org | ||
| + | members.example.org: | ||
| + | </ | ||
| + | |||
| + | URL-Schema und Pfad dürfen nicht angegeben werden. | ||
| + | |||
| + | Diese Option wählt die Konfigurationsumgebung. Sie ist nicht der Hostname einer phpMyAdmin-Installation oder einer anderen Datenbank-Administrationsoberfläche. | ||
| + | |||
| + | ===== Ausgabeformate ===== | ||
| + | |||
| + | Verschiedene Befehle unterstützen unterschiedliche Ausgabeformate. Die befehlsspezifische Hilfe zeigt die für einen Befehl zulässigen Formate: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio help sso:list | ||
| + | </ | ||
| + | |||
| + | Von CLI-Befehlen verwendete Formate sind: | ||
| + | |||
| + | ^ Format ^ Verwendungszweck ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | Nicht jeder Befehl unterstützt jedes Format. | ||
| + | |||
| + | Eine normale Tabelle eignet sich für kurze Listen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio sso:list --format=table --as=administrator | ||
| + | </ | ||
| + | |||
| + | Für Objekte mit vielen Feldern ist '' | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio sso:list --format=record --as=administrator | ||
| + | </ | ||
| + | |||
| + | Beispiel: | ||
| + | |||
| + | < | ||
| + | type: saml | ||
| + | id: 2 | ||
| + | uuid: 2b8618d0-... | ||
| + | client_id: intranet | ||
| + | name: Intranet SAML | ||
| + | enabled: yes | ||
| + | |||
| + | type: oidc | ||
| + | id: 3 | ||
| + | uuid: 90c9777a-... | ||
| + | client_id: wiki | ||
| + | name: Wiki | ||
| + | enabled: yes | ||
| + | </ | ||
| + | |||
| + | Für Skripte sollte möglichst JSON verwendet werden: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio user:list --format=json --as=administrator | ||
| + | </ | ||
| + | |||
| + | Wenn '' | ||
| + | |||
| + | Ändernde Befehle, die nur eine Erfolgsbestätigung zurückgeben, | ||
| + | |||
| + | ===== Ausgabe in eine Datei schreiben ===== | ||
| + | |||
| + | Befehle mit normaler CLI-Ausgabe können diese direkt in eine Datei schreiben: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio config:list --format=json --output=preferences.json --as=administrator | ||
| + | </ | ||
| + | |||
| + | Befehle, die einen Export oder ein Backup erzeugen, verwenden ebenfalls '' | ||
| + | |||
| + | Beispiel: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio database: | ||
| + | --output=/ | ||
| + | --as=administrator | ||
| + | </ | ||
| + | |||
| + | Vor der Verwendung von Ausgabepfaden in einem automatisierten Skript immer prüfen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio help COMMAND | ||
| + | </ | ||
| + | |||
| + | ===== Exit-Codes ===== | ||
| + | |||
| + | Skripte sollten immer den Exit-Code des Prozesses auswerten. | ||
| + | |||
| + | ^ Code ^ Bedeutung ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | Nicht jeder von Null verschiedene Code bedeutet denselben Fehlertyp. Exit-Code '' | ||
| + | |||
| + | ===== Admidio über die CLI installieren ===== | ||
| + | |||
| + | Eine neue Admidio-Installation kann ohne Browser-Installer geprüft und angelegt werden. | ||
| + | |||
| + | Zuerst Datenbankverbindung, | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio install: | ||
| + | </ | ||
| + | |||
| + | Anschließend die Installation ausführen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio install:run [options] --yes | ||
| + | </ | ||
| + | |||
| + | Wenn Werte fehlen und Interaktion erlaubt ist, fragt die CLI danach. Mit '' | ||
| + | |||
| + | Ein typischer nicht-interaktiver Aufruf enthält: | ||
| + | |||
| + | * Datenbanktyp, | ||
| + | * Datenbankpasswort, | ||
| + | * Admidio-Root-URL; | ||
| + | * Kurzname, Name und Administrator-E-Mail der Organisation; | ||
| + | * Login, Vorname, Nachname, E-Mail und Passwort des Administrators; | ||
| + | * optional Tabellenpräfix, | ||
| + | |||
| + | Beispiel: | ||
| + | |||
| + | <code bash> | ||
| + | { | ||
| + | printf ' | ||
| + | printf ' | ||
| + | } | ./admidio install:run \ | ||
| + | --db-type=mariadb \ | ||
| + | --db-host=localhost \ | ||
| + | --db-name=admidio \ | ||
| + | --db-user=admidio \ | ||
| + | --db-password-stdin \ | ||
| + | --root-url=https:// | ||
| + | --timezone=Europe/ | ||
| + | --organization-shortname=EXAMPLE \ | ||
| + | --organization-name=" | ||
| + | --organization-email=info@example.org \ | ||
| + | --admin-login=admin \ | ||
| + | --admin-first-name=Anna \ | ||
| + | --admin-last-name=Admin \ | ||
| + | --admin-email=anna@example.org \ | ||
| + | --admin-password-stdin \ | ||
| + | --no-interaction \ | ||
| + | --yes | ||
| + | </ | ||
| + | |||
| + | Wenn sowohl Datenbank- als auch Administratorpasswort aus stdin gelesen werden, steht das Datenbankpasswort in der ersten und das Administratorpasswort in der zweiten Zeile. | ||
| + | |||
| + | Bei der Bereitstellung einer Produktivinstallation sollte '' | ||
| + | |||
| + | ===== Befehlsbereiche ===== | ||
| + | |||
| + | Die generierte Befehlsreferenz ist die verbindliche Liste. Die CLI deckt derzeit insbesondere folgende Bereiche ab: | ||
| + | |||
| + | * allgemeine Hilfe, Befehlsliste, | ||
| + | * Installation, | ||
| + | * Einstellungen und Organisationen; | ||
| + | * Benutzer, Registrierungen, | ||
| + | * Kategorien und Menüeinträge; | ||
| + | * Ankündigungen, | ||
| + | * Dokumente/ | ||
| + | * Inventarfelder, | ||
| + | * Veranstaltungen und Räume; | ||
| + | * Kategorieauswertungen und Changelog-Anzeige; | ||
| + | * Plugins, SSO-Clients/ | ||
| + | * Modul-/ | ||
| + | |||
| + | Die genauen Befehle eines Bereichs werden angezeigt mit: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio list NAMESPACE | ||
| + | </ | ||
| + | |||
| + | ===== Häufige Administrationsbeispiele ===== | ||
| + | |||
| + | ==== Installationsversion und Status prüfen ==== | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio version | ||
| + | ./admidio status | ||
| + | </ | ||
| + | |||
| + | '' | ||
| + | |||
| + | Wenn der Zustand nicht in Ordnung ist, wird Exit-Code '' | ||
| + | |||
| + | Beispiel: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio status --format=json > / | ||
| + | code=$? | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | fi | ||
| + | </ | ||
| + | |||
| + | Der Exit-Code sollte unmittelbar nach dem Befehl gespeichert werden, bevor ein weiterer Shell-Befehl ausgeführt wird. | ||
| + | |||
| + | ==== Auf ein öffentliches Admidio-Update prüfen ==== | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio update: | ||
| + | </ | ||
| + | |||
| + | Für Automatisierung: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio update: | ||
| + | </ | ||
| + | |||
| + | Exit-Code '' | ||
| + | |||
| + | ==== CLI-Selbstprüfung ausführen ==== | ||
| + | |||
| + | Die CLI kann Registry, generierte Hilfe und interne Konsistenz ihres CLI-Quellcodes prüfen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio cli: | ||
| + | </ | ||
| + | |||
| + | Für CI oder andere Automatisierungen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio cli: | ||
| + | </ | ||
| + | |||
| + | Ein Problem wird mit Exit-Code '' | ||
| + | |||
| + | Diese Selbstprüfung prüft die CLI-Infrastruktur. Sie ersetzt keine Verhaltenstests der zugrunde liegenden Admidio-Domänenoperationen. | ||
| + | |||
| + | ==== Shell-Completion erzeugen ==== | ||
| + | |||
| + | Bash- und Zsh-Completion-Skripte werden aus der Befehlsregistry erzeugt: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio completion bash > / | ||
| + | </ | ||
| + | |||
| + | oder: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio completion zsh > " | ||
| + | </ | ||
| + | |||
| + | Als nicht verfügbar registrierte Befehle werden nicht in die Completion aufgenommen. | ||
| + | |||
| + | ==== Einstellungen lesen ==== | ||
| + | |||
| + | Alle Einstellungen auflisten: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio config:list --as=administrator | ||
| + | </ | ||
| + | |||
| + | Nach Einstellungsnamen suchen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio config:list --filter=events --as=administrator | ||
| + | </ | ||
| + | |||
| + | Einen Wert lesen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio config:get system_language --as=administrator | ||
| + | </ | ||
| + | |||
| + | Einen Wert ändern: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio config:set events_module_enabled 1 --as=administrator | ||
| + | </ | ||
| + | |||
| + | Vor Änderungen per Skript sollten Einstellungsname und zulässiger Wert in der normalen Admidio-Konfiguration und in der Befehlshilfe geprüft werden. | ||
| + | |||
| + | ==== Benutzer auflisten und anzeigen ==== | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio user:list --as=administrator | ||
| + | ./admidio user:show john.doe --as=administrator | ||
| + | </ | ||
| + | |||
| + | Für ein gut lesbares vollständiges Objekt kann, sofern unterstützt, | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio user:show john.doe --format=record --as=administrator | ||
| + | </ | ||
| + | |||
| + | Für Automatisierungen JSON verwenden: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio user:show john.doe --memberships --relations --format=json --as=administrator | ||
| + | </ | ||
| + | |||
| + | ==== Benutzer anlegen ==== | ||
| + | |||
| + | Admidio-Profilfelder sind konfigurierbar. Benutzerdaten werden deshalb mit den internen Profilfeldnamen übergeben: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio user:add \ | ||
| + | --login=john.doe \ | ||
| + | --field=FIRST_NAME=John \ | ||
| + | --field=LAST_NAME=Doe \ | ||
| + | --field=EMAIL=john@example.org \ | ||
| + | --as=administrator | ||
| + | </ | ||
| + | |||
| + | Die konfigurierten Profilfelder können angezeigt werden mit: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio profile: | ||
| + | </ | ||
| + | |||
| + | Ein Benutzer kann direkt Gruppen zugeordnet werden: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio user:add \ | ||
| + | --login=john.doe \ | ||
| + | --field=FIRST_NAME=John \ | ||
| + | --field=LAST_NAME=Doe \ | ||
| + | --group=Members \ | ||
| + | --as=administrator | ||
| + | </ | ||
| + | |||
| + | Wenn ein Befehl ein Passwort oder ein anderes Geheimnis akzeptiert, sollte die jeweilige '' | ||
| + | |||
| + | ==== Gruppenmitgliedschaft ==== | ||
| + | |||
| + | Vorhandenen Benutzer zuordnen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio group: | ||
| + | </ | ||
| + | |||
| + | Benutzer für einen definierten Zeitraum zuordnen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio group: | ||
| + | --start=2026-09-01 \ | ||
| + | --end=2027-08-31 \ | ||
| + | --leader=yes \ | ||
| + | --as=administrator | ||
| + | </ | ||
| + | |||
| + | Aktuelle Mitgliedschaft beenden: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio group: | ||
| + | </ | ||
| + | |||
| + | Vorhandene Mitgliedschaft ändern: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio group: | ||
| + | --leader=no \ | ||
| + | --as=administrator | ||
| + | </ | ||
| + | |||
| + | Normale Mitgliedschaftsoperationen erhalten die Admidio-Mitgliedschaftshistorie. | ||
| + | |||
| + | Das dauerhafte Löschen eines Eintrags der Mitgliedschaftshistorie ist eine separate Operation: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio group: | ||
| + | </ | ||
| + | |||
| + | Sie benötigt eine Bestätigung und sollte nur bewusst verwendet werden. | ||
| + | |||
| + | ==== Datenbankbackup ==== | ||
| + | |||
| + | Datenbanksicherung erstellen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio database: | ||
| + | </ | ||
| + | |||
| + | In ein bestimmtes Ziel schreiben: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio database: | ||
| + | --output=/ | ||
| + | --as=administrator | ||
| + | </ | ||
| + | |||
| + | Datenbank-Dumps enthalten die vollständigen Installationsdaten und werden, soweit das Betriebssystem dies erlaubt, als private Dateien geschützt. | ||
| + | |||
| + | Vor größeren skriptgesteuerten Änderungen oder Migrationen sollte ein Backup erstellt werden. | ||
| + | |||
| + | ==== Inventar importieren und exportieren ==== | ||
| + | |||
| + | Vor dem Import die aufgelöste Zuordnung prüfen, ohne Daten zu schreiben: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio inventory: | ||
| + | --format=json \ | ||
| + | --as=administrator | ||
| + | </ | ||
| + | |||
| + | Inventardatei importieren: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio inventory: | ||
| + | </ | ||
| + | |||
| + | Wenn Quellspalten nicht den konfigurierten Admidio-Inventarfeldern entsprechen, | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio inventory: | ||
| + | --input-format=CSV \ | ||
| + | --separator=semicolon \ | ||
| + | --map=ITEMNAME=1 \ | ||
| + | --map=CATEGORY=2 \ | ||
| + | --map=SERIAL_NUMBER=3 \ | ||
| + | --as=administrator | ||
| + | </ | ||
| + | |||
| + | Inventardaten exportieren: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio inventory: | ||
| + | --format=xlsx \ | ||
| + | --output=inventory.xlsx \ | ||
| + | --as=administrator | ||
| + | </ | ||
| + | |||
| + | Für die von der installierten Admidio-Version unterstützten Dateiformate und Optionen immer '' | ||
| + | |||
| + | ==== Veranstaltungen und Räume ==== | ||
| + | |||
| + | Veranstaltungen und Räume können über ihre CLI-Befehlsfamilien administriert werden. | ||
| + | |||
| + | Beispiel zum Anlegen einer Veranstaltung: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio event:add \ | ||
| + | --headline=" | ||
| + | --calendar=General \ | ||
| + | --from=" | ||
| + | --to=" | ||
| + | --location=" | ||
| + | --as=administrator | ||
| + | </ | ||
| + | |||
| + | Die genauen Veranstaltungs- und Raumoperationen sowie deren Optionen werden angezeigt mit: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio list event | ||
| + | ./admidio list room | ||
| + | </ | ||
| + | |||
| + | und '' | ||
| + | |||
| + | ==== SSO-Administration ==== | ||
| + | |||
| + | Alle SSO-Clients auflisten: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio sso:list --format=record --as=administrator | ||
| + | </ | ||
| + | |||
| + | Nur SAML-Clients anzeigen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio sso:list --type=saml --format=record --as=administrator | ||
| + | </ | ||
| + | |||
| + | Einen Client anzeigen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio sso:show CLIENT_UUID --as=administrator | ||
| + | </ | ||
| + | |||
| + | SSO-Schlüssel, | ||
| + | |||
| + | Die vollständige Liste steht in der [[en: | ||
| + | |||
| + | ==== Wartungsmodus ==== | ||
| + | |||
| + | Der Wartungsmodus kann auch abgefragt werden, wenn die Datenbank nicht verfügbar ist: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio maintenance: | ||
| + | ./admidio maintenance: | ||
| + | </ | ||
| + | |||
| + | Interaktiv aktivieren: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio maintenance: | ||
| + | --message=" | ||
| + | --retry-after=300 | ||
| + | </ | ||
| + | |||
| + | Für eine bewusst nicht-interaktive Verwendung: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio maintenance: | ||
| + | --message=" | ||
| + | --retry-after=300 \ | ||
| + | --no-interaction \ | ||
| + | --yes | ||
| + | </ | ||
| + | |||
| + | Wartungsmodus deaktivieren: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio maintenance: | ||
| + | </ | ||
| + | |||
| + | Der Wartungsmodus besitzt eine Owner-Kennung, | ||
| + | |||
| + | ===== CLI in Skripten verwenden ===== | ||
| + | |||
| + | Die CLI ist für skriptgesteuerte Verwendung ausgelegt. | ||
| + | |||
| + | Für zuverlässige Automatisierungen: | ||
| + | |||
| + | * absolute Pfade verwenden; | ||
| + | * bei Installationen mit mehreren Organisationen die Organisation ausdrücklich auswählen; | ||
| + | * einen eigenen aktivierten Admidio-Akteur mit nur den benötigten Rechten verwenden; | ||
| + | * '' | ||
| + | * '' | ||
| + | * wenn möglich UUIDs für langlebige Objektreferenzen verwenden; | ||
| + | * '' | ||
| + | * Standardausgabe für Daten und Standardfehler für Fehler auswerten; | ||
| + | * den Prozess-Exit-Code auswerten; | ||
| + | * für Passwörter und Geheimnisse verfügbare '' | ||
| + | * in Integrationen keine Tabellen-/ | ||
| + | |||
| + | ==== Bash-Beispiel ==== | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/sh | ||
| + | |||
| + | ADMIDIO=/ | ||
| + | ACTOR=automation-admin | ||
| + | |||
| + | " | ||
| + | status_code=$? | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | exit " | ||
| + | fi | ||
| + | |||
| + | " | ||
| + | --format=json \ | ||
| + | --as=" | ||
| + | --no-interaction \ | ||
| + | --output=/ | ||
| + | </ | ||
| + | |||
| + | ==== PowerShell-Beispiel ==== | ||
| + | |||
| + | <code powershell> | ||
| + | $Admidio = " | ||
| + | |||
| + | $statusJson = php $Admidio status --format=json | ||
| + | $statusCode = $LASTEXITCODE | ||
| + | |||
| + | if ($statusCode -ne 0) { | ||
| + | Write-Error " | ||
| + | exit $statusCode | ||
| + | } | ||
| + | |||
| + | $status = $statusJson | ConvertFrom-Json | ||
| + | |||
| + | $users = php $Admidio user:list ` | ||
| + | --format=json ` | ||
| + | --as=automation-admin | ConvertFrom-Json | ||
| + | |||
| + | $users | ForEach-Object { | ||
| + | Write-Host $_.login | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Geplante Aufgaben ===== | ||
| + | |||
| + | Für Cronjobs die CLI mit absolutem Pfad aufrufen und Interaktion deaktivieren. | ||
| + | |||
| + | Beispiel: | ||
| + | |||
| + | < | ||
| + | 15 2 * * * / | ||
| + | </ | ||
| + | |||
| + | Der Betriebssystembenutzer, | ||
| + | |||
| + | * die Admidio-Installation; | ||
| + | * '' | ||
| + | * alle von der Aufgabe verwendeten Ein-/ | ||
| + | * die konfigurierte Datenbank. | ||
| + | |||
| + | Außerdem muss das mit '' | ||
| + | |||
| + | ===== Andere Anwendungen integrieren ===== | ||
| + | |||
| + | Die CLI kann als administrative Grenze zwischen einer anderen Anwendung bzw. einem Migrationsskript und Admidio verwendet werden. | ||
| + | |||
| + | Anstatt direkt in die Admidio-Datenbank zu schreiben, kann eine Integration den passenden Admidio-Befehl aufrufen. | ||
| + | |||
| + | Ein externes Provisioning-Skript kann zum Beispiel: | ||
| + | |||
| + | - mit '' | ||
| + | - mit '' | ||
| + | - mit '' | ||
| + | - mit '' | ||
| + | - das Ergebnis mit '' | ||
| + | |||
| + | Das hat gegenüber direktem SQL einen wichtigen Vorteil: Der Befehl verwendet die normalen Admidio-Entities, | ||
| + | |||
| + | ==== Beispiel für einen Migrationsablauf ==== | ||
| + | |||
| + | Eine typische Migration aus einem anderen Mitgliederverwaltungssystem kann so ablaufen: | ||
| + | |||
| + | - Datenbankbackup erstellen; | ||
| + | - benötigte Admidio-Gruppen anlegen oder zuordnen; | ||
| + | - konfigurierte Profilfelder mit '' | ||
| + | - Quelldaten auf die benötigten internen Feldnamen abbilden; | ||
| + | - für jede Person '' | ||
| + | - mit '' | ||
| + | - Ergebnis mit '' | ||
| + | |||
| + | Größere Migrationen zuerst vollständig gegen eine Kopie der Produktivinstallation testen. | ||
| + | |||
| + | ===== Bezeichner in Skripten auswählen ===== | ||
| + | |||
| + | Viele Befehle akzeptieren für ein Objekt mehrere Bezeichner, zum Beispiel: | ||
| + | |||
| + | * UUID; | ||
| + | * numerische Datenbank-ID; | ||
| + | * Loginname; | ||
| + | * Gruppen- oder Kategoriename. | ||
| + | |||
| + | Für interaktive Administration sind Namen bequem: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio group: | ||
| + | </ | ||
| + | |||
| + | Für langlebige Integrationen sollten UUIDs bevorzugt werden, sofern der jeweilige Befehl sie akzeptiert. | ||
| + | |||
| + | Namen können geändert werden und manchmal mehrdeutig sein. Ist ein Selektor mehrdeutig, schlägt die CLI fehl, anstatt stillschweigend ein Objekt auszuwählen. | ||
| + | |||
| + | ===== Interaktive und nicht-interaktive Befehle ===== | ||
| + | |||
| + | Bestätigungspflichtige Befehle fragen standardmäßig interaktiv nach. | ||
| + | |||
| + | Beispiel: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio group: | ||
| + | </ | ||
| + | |||
| + | Für eine bewusst automatisierte Operation: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio group: | ||
| + | --as=administrator \ | ||
| + | --no-interaction \ | ||
| + | --yes | ||
| + | </ | ||
| + | |||
| + | Wenn eine Bestätigung nötig wäre und '' | ||
| + | |||
| + | '' | ||
| + | |||
| + | ===== Verfügbarkeit registrierter Befehle ===== | ||
| + | |||
| + | Ein Befehl kann in der Registry vorhanden, aber als nicht verfügbar markiert sein, wenn die entsprechende Webfunktion noch keine wiederverwendbare headless Operation besitzt. | ||
| + | |||
| + | '' | ||
| + | |||
| + | Die Shell-Completion lässt als nicht verfügbar markierte Befehle aus. | ||
| + | |||
| + | Ein nicht verfügbarer Befehl sollte nicht durch direkte Manipulation der Admidio-Datenbank umgangen werden. Verwende die entsprechende unterstützte Webfunktion oder warte, bis die benötigte wiederverwendbare Core-Operation verfügbar ist. | ||
| + | |||
| + | ===== Fehlerbehebung ===== | ||
| + | |||
| + | ==== Die CLI verbindet sich mit der falschen Datenbank ==== | ||
| + | |||
| + | Die CLI lädt '' | ||
| + | |||
| + | Wenn die Konfiguration anhand von '' | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio --host=members.example.org status | ||
| + | </ | ||
| + | |||
| + | oder setzen: | ||
| + | |||
| + | <code bash> | ||
| + | ADMIDIO_HOST=members.example.org | ||
| + | </ | ||
| + | |||
| + | ==== Der Befehl meldet, dass --as benötigt wird ==== | ||
| + | |||
| + | Der gewählte Befehl benötigt eine ausführende Admidio-Identität. | ||
| + | |||
| + | Einen aktivierten Benutzer angeben, der aktives Mitglied der aktuellen Organisation ist: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio COMMAND --as=administrator | ||
| + | </ | ||
| + | |||
| + | '' | ||
| + | |||
| + | ==== Das ausführende Konto ist nicht aktiviert oder kein aktives Mitglied ==== | ||
| + | |||
| + | Ein mit '' | ||
| + | |||
| + | Das Konto über die normale Admidio-Administration aktivieren bzw. zuordnen, bevor es als Automatisierungs-Akteur verwendet wird. | ||
| + | |||
| + | ==== Keine Berechtigung / SYS_NO_RIGHTS ==== | ||
| + | |||
| + | Die CLI umgeht Admidio-Berechtigungen nicht. | ||
| + | |||
| + | Prüfen: | ||
| + | |||
| + | * ausgewählte Organisation; | ||
| + | * ausführender Benutzer; | ||
| + | * ob die betreffende Komponente für den Benutzer sichtbar/ | ||
| + | * objektspezifische oder Gruppen-/ | ||
| + | * ob der Befehl einen vollständigen Administrator benötigt. | ||
| + | |||
| + | ==== Ein Name ist mehrdeutig ==== | ||
| + | |||
| + | Die UUID aus dem entsprechenden '' | ||
| + | |||
| + | ==== Ein Ausgabeformat wird abgelehnt ==== | ||
| + | |||
| + | Nicht jedes Format ist für jeden Befehl gültig. | ||
| + | |||
| + | Mit: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio help COMMAND | ||
| + | </ | ||
| + | |||
| + | die genauen zulässigen Werte anzeigen. | ||
| + | |||
| + | ==== Ein Befehl wird als nicht verfügbar angezeigt ==== | ||
| + | |||
| + | Die Verfügbarkeitserklärung anzeigen mit: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio help COMMAND | ||
| + | </ | ||
| + | |||
| + | Die Registry zeigt den Grund bewusst an, anstatt stillschweigend eine unvollständige headless Implementierung anzubieten. | ||
| + | |||
| + | ==== Befehle eines Moduls fehlen ==== | ||
| + | |||
| + | Modulbefehle werden geladen aus: | ||
| + | |||
| + | < | ||
| + | modules/< | ||
| + | </ | ||
| + | |||
| + | Schlägt das Laden der CLI-Registrierung eines Moduls fehl, schreibt die CLI eine Warnung auf Standardfehler und lädt die übrigen Befehle weiter. Die Warnung prüfen und anschließend ausführen: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio module: | ||
| + | </ | ||
| + | |||
| + | um die erfolgreich registrierten Befehle zu sehen. | ||
| + | |||
| + | ===== Sicherheitsempfehlungen ===== | ||
| + | |||
| + | Die CLI sollte als administrative Serverschnittstelle behandelt werden. | ||
| + | |||
| + | * Shellzugriff auf vertrauenswürdige Benutzer und Service-Accounts beschränken. | ||
| + | * Admidio-Quellbaum und '' | ||
| + | * Die CLI nicht über einen webzugänglichen Wrapper bereitstellen. | ||
| + | * Beachten, dass '' | ||
| + | * Für automatisierte Aufgaben gegebenenfalls einen eigenen aktivierten Admidio-Akteur verwenden. | ||
| + | * Diesem Akteur nur die für die Automatisierung benötigten Rechte geben. | ||
| + | * Vor Massenänderungen Backups erstellen. | ||
| + | * Wo unterstützt, | ||
| + | * Passwörter, | ||
| + | * Erzeugte Backups und geheime Exporte schützen. | ||
| + | * Für langlebige Integrationsskripte UUIDs bevorzugen. | ||
| + | * JSON verwenden, statt menschenlesbare Tabellenausgabe zu parsen. | ||
| + | * Exit-Codes auswerten und stderr nicht ignorieren. | ||
| + | |||
| + | ===== Befehlsreferenz ===== | ||
| + | |||
| + | Die vollständige Befehlsreferenz wird direkt aus der installierten CLI erzeugt: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio help --all --format=dokuwiki | ||
| + | </ | ||
| + | |||
| + | Eine Datei für die DokuWiki-Seite kann so erzeugt werden: | ||
| + | |||
| + | <code bash> | ||
| + | ./admidio help --all --format=dokuwiki --output=cli-commands.txt | ||
| + | </ | ||
| + | |||
| + | Siehe [[en: | ||
| + | |||
| + | Da diese Seite direkt aus der Befehlsregistry erzeugt wird, ist sie die verbindliche Beschreibung von Argumenten, Optionen, Aliasnamen, zusätzlich deklarierten Rechten und Verfügbarkeit einer bestimmten Admidio-Version. | ||
| + | |||
| + | Die generierte Befehlsreferenz ist derzeit nur auf Englisch verfügbar, weil die CLI-Hilfemetadaten noch nicht lokalisiert werden. | ||