Verwenden von cURL mit AEM

Administratoren müssen häufig auszuführende Aufgaben in einem System oft automatisieren oder vereinfachen. In AEM stellen die Benutzerverwaltung, die Installation von Paketen und die Verwaltung von OSGi-Bundles beispielsweise Aufgaben dar, die am häufigsten durchgeführt werden.

Da das Sling-Framework, auf dem AEM aufsetzt, auf dem REST-Prinzip basiert, lässt sich fast jede Aufgabe auf einen URL-Aufruf reduzieren. Solche URL-Aufrufe können mit cURL ausgeführt werden, was für Administratoren hilfreich ist.

Was ist cURL?

Bei cURL handelt es sich um ein Open-Source-Befehlszeilentool für die URL-Manipulation. Es unterstützt eine breite Palette von Internetprotokollen wie HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, LDAP, DAP, DICT, TELNET, FILE, IMAP, POP3, SMTP und RTSP.

Das etablierte Tool wurde erstmals 1997 veröffentlicht und wird seitdem weitläufig für den Empfang und Versand von Daten mit der URL-Syntax genutzt. Der Name cURL stand ursprünglich für „see URL“ (siehe URL).

Da das Sling-Framework, auf dem AEM aufsetzt, auf dem REST-Prinzip basiert, lässt sich fast jede Aufgabe auf einen URL-Aufruf reduzieren, der mit cURL ausführbar ist. Aufgaben zur Inhaltsbearbeitung, beispielsweise die Aktivierung von Seiten oder das Starten von Workflows, und betriebliche Aufgaben wie die Paket- und die Benutzerverwaltung lassen sich mit cURL automatisieren. Darüber hinaus können Sie für die meisten Aufgaben in AEM Ihre eigenen cURLs erstellen.

Hinweis

Jeder AEM-Befehl, der über cURL ausgeführt wird, muss in AEM genau wie jeder Benutzer autorisiert werden. Bei der Ausführung eines AEM-Befehls mit cURL werden alle ACLs und Zugriffsrechte eingehalten.

Herunterladen von cURL

Bei MacOS und einigen Linux-Distributionen ist cURL standardmäßig enthalten. Das Tool ist jedoch für die meisten Betriebssysteme erhältlich. The latest downloads can be found at https://curl.haxx.se/download.html.

Das Quell-Repository von cURL finden Sie auch auf GitHub.

Entwickeln eines cURL-fähigen AEM-Befehls

Sie können für die meisten Vorgänge in AEM cURL-Befehle entwickeln, z. B. für das Auslösen von Workflows, das Prüfen von OSGi-Konfigurationen, das Auslösen von JMX-Befehlen, das Erstellen von Replikationsagenten und vieles mehr.

Um zu ermitteln, welchen Befehl Sie für den gewünschten Vorgang benötigen, erfassen Sie mit den Entwicklertools des Browsers den POST-Aufruf an den Server, wenn Sie den AEM-Befehl ausführen.

Am Beispiel der Erstellung einer neuen Seite im Chrome-Browser werden die dafür nötigen Schritte nachfolgend beschrieben.

  1. Bereiten Sie die Aktion vor, die Sie in AEM auslösen möchten. In this case, we have proceded to the end of the Create Page wizard, but have not yet clicked Create.

    chlimage_1-66

  2. Starten Sie die Entwicklertools und wählen Sie die Registerkarte Network aus. Klicken Sie auf die Option Preserve log, bevor Sie den Konsoleninhalt löschen.

    chlimage_1-67

  3. Klicken Sie im Assistenten Seite erstellen auf Erstellen, um den Workflow zu erstellen.

  4. Klicken Sie mit der rechten Maustaste auf die daraus entstehende POST-Aktion und wählen Sie Copy > Copy as cURL (cmd) aus.

    chlimage_1-68

  5. Copy the cURL command to a text editor and remove all headers from the command, which start with -H (highligted in blue in the image below) and add the proper authentication parameter such as -u <user>:<password>.

    chlimage_1-69

  6. Führen Sie den cURL-Befehl über die Befehlszeile aus und zeigen Sie die Antwort an.

    chlimage_1-70

Gängige cURL-Befehle für Betriebsaufgaben in AEM

Hier finden Sie eine Liste an cURL-Befehlen für gängige administrative und betriebliche Aufgaben für AEM.

Hinweis

Bei den folgenden Beispielen wird vorausgesetzt, dass AEM auf dem localhost an Port 4502 ausgeführt wird und den Benutzer admin mit dem Kennwort admin nutzt. Zusätzliche Befehlsplatzhalter sind in eckigen Klammern angefügt.

Paketverwaltung

Liste aller installierten Pakete

curl -u <user>:<password> http://<host>:<port>/crx/packmgr/service.jsp?cmd=ls

Erstellen eines Pakets

curl -u <user>:<password> -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/mycontent.zip?cmd=create -d packageName=<name> -d groupName=<name>

Vorschau eines Pakets anzeigen

curl -u <user>:<password> -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/mycontent.zip?cmd=preview

Auflisten des Paketinhalts

curl -u <user>:<password> -X POST http://localhost:4502/crx/packmgr/service/console.html/etc/packages/mycontent.zip?cmd=contents

Entwickeln eines Pakets

curl -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/mycontent.zip?cmd=build

Erneutes Packen eines Pakets

curl -u <user>:<password> -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/mycontent.zip?cmd=rewrap

Umbenennen eines Pakets

curl -u <user>:<password> -X POST -Fname=<New Name> http://localhost:4502/etc/packages/<Group Name>/<Package Name>.zip/jcr:content/vlt:definition

Hochladen eines Pakets

curl -u <user>:<password> -F cmd=upload -F force=true -F package=@test.zip http://localhost:4502/crx/packmgr/service/.json

Installieren eines Pakets

curl -u <user>:<password> -F cmd=install http://localhost:4502/crx/packmgr/service/.json/etc/packages/my_packages/test.zip

Deinstallieren eines Pakets

curl -u <user>:<password> -F cmd=uninstall http://localhost:4502/crx/packmgr/service/.json/etc/packages/my_packages/test.zip

Löschen eines Pakets

curl -u <user>:<password> -F cmd=delete http://localhost:4502/crx/packmgr/service/.json/etc/packages/my_packages/test.zip

Herunterladen eines Pakets

curl -u <user>:<password> http://localhost:4502/etc/packages/my_packages/test.zip

Benutzerverwaltung

Erstellen eines neuen Benutzers

curl -u <user>:<password> -FcreateUser= -FauthorizableId=hashim -Frep:password=hashim http://localhost:4502/libs/granite/security/post/authorizables

Erstellen einer neuen Gruppe

curl -u <user>:<password> -FcreateGroup=group1 -FauthorizableId=testGroup1 http://localhost:4502/libs/granite/security/post/authorizables

Hinzufügen einer Eigenschaft zu einem vorhandenen Benutzer

curl -u <user>:<password> -Fprofile/age=25 http://localhost:4502/home/users/h/hashim.rw.html

Erstellen eines Benutzers mit einem Profil

curl -u <user>:<password> -FcreateUser=testuser -FauthorizableId=hashimkhan -Frep:password=hashimkhan -Fprofile/gender=male http://localhost:4502/libs/granite/security/post/authorizables

Erstellen eines neuen Benutzers als Mitglied einer Gruppe

curl -u <user>:<password> -FcreateUser=testuser -FauthorizableId=testuser -Frep:password=abc123 -Fmembership=contributor http://localhost:4502/libs/granite/security/post/authorizables

Hinzufügen eines Benutzers zu einer Gruppe

curl -u <user>:<password> -FaddMembers=testuser1 http://localhost:4502/home/groups/t/testGroup.rw.html

Entfernen eines Benutzers aus einer Gruppe

curl -u <user>:<password> -FremoveMembers=testuser1 http://localhost:4502/home/groups/t/testGroup.rw.html

Festlegen der Gruppenmitgliedschaft eines Benutzers

curl -u <user>:<password> -Fmembership=contributor -Fmembership=testgroup http://localhost:4502/home/users/t/testuser.rw.html

Löschen eines Benutzers

curl -u <user>:<password> -FdeleteAuthorizable= http://localhost:4502/home/users/t/testuser


Löschen einer Gruppe

curl -u <user>:<password> -FdeleteAuthorizable= http://localhost:4502/home/groups/t/testGroup

Sicherung

See Backup and Restore for details.

OSGi-

Starten eines Bundles

curl -u <user>:<password> -Faction=start http://localhost:4502/system/console/bundles/<bundle-name>

Beenden eines Bundles

curl -u <user>:<password> -Faction=stop http://localhost:4502/system/console/bundles/<bundle-name>

Dispatcher

Annullieren des Caches

curl -H "CQ-Action: Activate" -H "CQ-Handle: /content/test-site/" -H "CQ-Path: /content/test-site/" -H "Content-Length: 0" -H "Content-Type: application/octet-stream" http://localhost:4502/dispatcher/invalidate.cache

Erzwungenes Löschen des Caches

curl -H "CQ-Action: Deactivate" -H "CQ-Handle: /content/test-site/" -H "CQ-Path: /content/test-site/" -H "Content-Length: 0" -H "Content-Type: application/octet-stream" http://localhost:4502/dispatcher/invalidate.cache

Replikationsagent

Prüfen des Status eines Agenten

curl -u <user>:<password> "http://localhost:4502/etc/replication/agents.author/publish/jcr:conten t.queue.json?agent=publish"
http://localhost:4502/etc/replication/agents.author/publish/jcr:content.queue.js on?agent=publish

Löschen eines Agenten

curl -X DELETE http://localhost:4502/etc/replication/agents.author/replication99 -u <user>:<password>

Erstellen eines Agenten

curl -u <user>:<password> -F "jcr:primaryType=cq:Page" -F "jcr:content/jcr:title=new-replication" -F "jcr:content/sling:resourceType=/libs/cq/replication/components/agent" -F "jcr:content/template=/libs/cq/replication/templates/agent" -F "jcr:content/transportUri=http://localhost:4503/bin/receive?sling:authRequestLogin=1" -F "jcr:content/transportUser=admin" -F "jcr:content/transportPassword={DES}8aadb625ced91ac483390ebc10640cdf"http://localhost:4502/etc/replication/agents.author/replication99

Pausieren eines Agenten

curl -u <user>:<password> -F "cmd=pause" -F "name=publish"  http://localhost:4502/etc/replication/agents.author/publish/jcr:content.queue.js on

Löschen einer Agentenwarteschlange

curl -u <user>:<password> -F "cmd=clear" -F "name=publish"  http://localhost:4502/etc/replication/agents.author/publish/jcr:content.queue.js on

Communities

Zuteilen und Entziehen von Abzeichen

See Communities Scoring and Badges for details.

See Scoring and Badges Essentials for details.

Erneute MSRP-Indizierung

See MSRP - MongoDB Storage Resource Provider for details.

Sicherheit

Aktivieren und Deaktivieren von CRXDE Lite

See Enabling CRXDE Lite in AEM for details.

Datenspeicherbereinigung

See Data Store Garbage Collection for details.

Integrieren von Analytics und Target

See Opting Into Adobe Analytics and Adobe Target for details.

Single Sign-On

Senden eines Test-Headers

See Single Sign On for details.

Gängige cURL-Befehle zur Inhaltsbearbeitung für AEM

Hier finden Sie eine Liste an cURL-Befehlen für die Inhaltsbearbeitung für AEM.

Hinweis

Bei den folgenden Beispielen wird vorausgesetzt, dass AEM auf dem localhost an Port 4502 ausgeführt wird und den Benutzer admin mit dem Kennwort admin nutzt. Zusätzliche Befehlsplatzhalter sind in eckigen Klammern angefügt.

Seitenverwaltung

Aktivieren einer Seite

curl -u <user>:<password> -X POST -F path="/content/path/to/page" -F cmd="activate" http://localhost:4502/bin/replicate.json

Deaktivieren einer Seite

curl -u <user>:<password> -X POST -F path="/content/path/to/page" -F cmd="deactivate" http://localhost:4502/bin/replicate.json

Aktivieren eines Baumes

curl -u <user>:<password> -F cmd=activate -F ignoredeactivated=true -F onlymodified=true -F path=/content/geometrixx http://localhost:4502/etc/replication/treeactivation.html

Sperren einer Seite

curl -u <user>:<password> -X POST -F cmd="lockPage" -F path="/content/path/to/page" -F "_charset_"="utf-8" http://localhost:4502/bin/wcmcommand

Entsperren einer Seite

curl -u <user>:<password> -X POST -F cmd="unlockPage" -F path="/content/path/to/page" -F "_charset_"="utf-8" http://localhost:4502/bin/wcmcommand

Kopieren einer Seite

curl -u <user>:<password> -F cmd=copyPage -F destParentPath=/path/to/destination/parent -F srcPath=/path/to/source/location http://localhost:4502/bin/wcmcommand

Workflows

See Interacting with Workflows Programmatically for details.

Sling-Inhalte

Erstellen eines Ordners

curl -u <user>:<password> -F jcr:primaryType=sling:Folder http://localhost:4502/etc/test

Löschen eines Knotens

curl -u <user>:<password> -F :operation=delete http://localhost:4502/etc/test/test.properties

Verschieben eines Knotens

curl -u <user>:<password> -F":operation=move" -F":applyTo=/sourceurl"  -F":dest=/target/parenturl/" https://localhost:4502/content

Kopieren eines Knotens

curl -u <user>:<password> -F":operation=copy" -F":applyTo=/sourceurl"  -F":dest=/target/parenturl/" https://localhost:4502/content

Hochladen von Dateien mit Sling PostServlet

curl -u <user>:<password> -F"*=@test.properties"  http://localhost:4502/etc/test

Hochladen von Dateien mit Sling PostServlet und unter Angabe des Knotennamens

curl -u <user>:<password> -F"test2.properties=@test.properties"  http://localhost:4502/etc/test

Hochladen von Dateien unter Angabe eines Inhaltstyps

curl -u <user>:<password> -F "*=@test.properties;type=text/plain" http://localhost:4502/etc/test

Asset-Bearbeitung

See Assets HTTP API for details.

Auf dieser Seite