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 RESTful-Prinzip basiert, lässt sich fast jede Aufgabe mit einem URL-Aufruf erledigen. 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-Befehlszeilen-Tool für die URL-Manipulation. Es unterstützt zahlreiche Internetprotokolle, darunter 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. Die aktuellen Downloads finden Sie unter 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 diesem Beispiel sind wir am Ende des Assistenten Seite erstellen angekommen, haben jedoch noch nicht auf Erstellen geklickt.

    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. Kopieren Sie den cURL-Befehl in einen Texteditor. Entfernen Sie alle Header aus dem Befehl, die mit -H beginnen (im folgenden Screenshot in blauer Farbe hervorgehoben), und fügen Sie die korrekten Authentifizierungsparameter hinzu, z. B. -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

Auflisten 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

Replizieren eines Pakets

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

User Management

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

Detaillierte Informationen finden Sie unter Sichern und Wiederherstellen.

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:content.queue.json?agent=publish"
http://localhost:4502/etc/replication/agents.author/publish/jcr:content.queue.json?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.json

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.json

Communities

Zuteilen und Entziehen von Abzeichen

Detaillierte Informationen finden Sie unter Vergabe von Bewertungen und Abzeichen in Communities.

Detaillierte Informationen finden Sie unter Grundlagen zu Bewertungen und Abzeichen.

Erneute MSRP-Indizierung

Detaillierte Informationen finden Sie unter MSRP – MongoDB Storage Resource Provider.

Sicherheit

Aktivieren und Deaktivieren von CRXDE Lite

Detaillierte Informationen finden Sie unter Aktivieren von CRXDE Lite in AEM.

Datenspeicherbereinigung

Detaillierte Informationen finden Sie unter Datenspeicherbereinigung.

Integrieren von Analytics und Target

Detaillierte Informationen finden Sie unter Opt-in für Adobe Analytics und Adobe Target.

Single Sign-On

Senden eines Test-Headers

Detaillierte Informationen finden Sie unter Single Sign-On.

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

Detaillierte Informationen finden Sie unter Programmgesteuerte Interaktion mit Workflows.

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

Detaillierte Informationen finden Sie unter Assets-HTTP-API.

Auf dieser Seite