Verwenden von cURL mit AEM using-curl-with-aem
Admins müssen häufig auszuführende Aufgaben in einem System oft automatisieren oder vereinfachen. In AEM stellen beispielsweise die Benutzerverwaltung, die Installation von Paketen und die Verwaltung von OSGi-Bundles Aufgaben dar, die häufig durchgeführt werden müssen.
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 AEM-Admins hilfreich ist.
Was ist cURL? what-is-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 aufbaut, auf dem RESTful-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.
Herunterladen von cURL downloading-curl
Bei MacOS und einigen Linux-Distributionen ist cURL standardmäßig enthalten. Das Tool ist jedoch für die meisten Betriebssysteme verfügbar. 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 building-a-curl-ready-aem-command
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 Entwickler-Tools des Browsers den POST-Aufruf an den Server, wenn Sie den AEM-Befehl ausführen.
Die dafür nötigen Schritte werden nachfolgend am Beispiel der Erstellung einer neuen Seite im Chrome-Browser beschrieben.
-
Bereiten Sie die Aktion vor, die Sie in AEM aufrufen möchten. In diesem Beispiel sind wir am Ende des Assistenten Seite erstellen angekommen, haben jedoch noch nicht auf Erstellen geklickt.
-
Starten Sie die Entwickler-Tools und wählen Sie die Registerkarte Netzwerk aus. Klicken Sie auf die Option Protokoll beibehalten, bevor Sie die Konsole löschen.
-
Klicken Sie im Assistenten Seite erstellen auf Erstellen, um den Workflow zu erstellen.
-
Klicken Sie mit der rechten Maustaste auf die daraus entstehende POST-Aktion und wählen Sie Copy > Als cURL kopieren aus.
-
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>
. -
Führen Sie den cURL-Befehl über die Befehlszeile aus und zeigen Sie die Antwort an.
Gängige cURL-Befehle für Betriebsaufgaben in AEM common-operational-aem-curl-commands
Hier finden Sie eine Liste an cURL-Befehlen für gängige administrative und betriebliche Aufgaben für AEM.
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 package-management
Auflisten aller installierten Pakete
curl -u <user>:<password> http://<host>:<port>/crx/packmgr/service.jsp?cmd=ls
Erstellen eines Pakets create-a-package
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>
Anzeigen eines Pakets in der Vorschau preview-a-package
curl -u <user>:<password> -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/mycontent.zip?cmd=preview
Auflisten des Paketinhalts list-package-content
curl -u <user>:<password> -X POST http://localhost:4502/crx/packmgr/service/console.html/etc/packages/mycontent.zip?cmd=contents
Entwickeln eines Pakets build-a-package
curl -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/mycontent.zip?cmd=build
Erneutes Packen eines Pakets rewrap-a-package
curl -u <user>:<password> -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/mycontent.zip?cmd=rewrap
Umbenennen eines Pakets rename-a-package
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 upload-a-package
curl -u <user>:<password> -F cmd=upload -F force=true -F package=@test.zip http://localhost:4502/crx/packmgr/service/.json
Installieren eines Pakets install-a-package
curl -u <user>:<password> -F cmd=install http://localhost:4502/crx/packmgr/service/.json/etc/packages/my_packages/test.zip
Deinstallieren eines Pakets uninstall-a-package
curl -u <user>:<password> -F cmd=uninstall http://localhost:4502/crx/packmgr/service/.json/etc/packages/my_packages/test.zip
Löschen eines Pakets delete-a-package
curl -u <user>:<password> -F cmd=delete http://localhost:4502/crx/packmgr/service/.json/etc/packages/my_packages/test.zip
Herunterladen eines Pakets download-a-package
curl -u <user>:<password> http://localhost:4502/etc/packages/my_packages/test.zip
Replizieren eines Pakets replicate-a-package
curl -u <user>:<password> -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/my_packages/test.zip?cmd=replicate
User Management user-management
Erstellen einer neuen Benutzerin oder eines neuen Benutzers create-a-new-user
curl -u <user>:<password> -FcreateUser= -FauthorizableId=hashim -Frep:password=hashim http://localhost:4502/libs/granite/security/post/authorizables
Erstellen einer neuen Gruppe create-a-new-group
curl -u <user>:<password> -FcreateGroup=group1 -FauthorizableId=testGroup1 http://localhost:4502/libs/granite/security/post/authorizables
Hinzufügen einer Eigenschaft zu einer vorhandenen Benutzerin oder einem vorhandenen Benutzer add-a-property-to-an-existing-user
curl -u <user>:<password> -Fprofile/age=25 http://localhost:4502/home/users/h/hashim.rw.html
Erstellen einer Benutzerin oder eines Benutzers mit einem Profil create-a-user-with-a-profile
curl -u <user>:<password> -FcreateUser=testuser -FauthorizableId=hashimkhan -Frep:password=hashimkhan -Fprofile/gender=male http://localhost:4502/libs/granite/security/post/authorizables
Erstellen einer neuen Benutzerin oder eines neuen Benutzers als Mitglied einer Gruppe create-a-new-user-as-a-member-of-a-group
curl -u <user>:<password> -FcreateUser=testuser -FauthorizableId=testuser -Frep:password=abc123 -Fmembership=contributor http://localhost:4502/libs/granite/security/post/authorizables
Hinzufügen einer Benutzerin oder eines Benutzers zu einer Gruppe add-a-user-to-a-group
curl -u <user>:<password> -FaddMembers=testuser1 http://localhost:4502/home/groups/t/testGroup.rw.html
Entfernen einer Benutzerin oder eines Benutzers aus einer Gruppe remove-a-user-from-a-group
curl -u <user>:<password> -FremoveMembers=testuser1 http://localhost:4502/home/groups/t/testGroup.rw.html
Festlegen der Gruppenmitgliedschaft einer Benutzerin oder eines Benutzers set-a-user-s-group-membership
curl -u <user>:<password> -Fmembership=contributor -Fmembership=testgroup http://localhost:4502/home/users/t/testuser.rw.html
Löschen einer Benutzerin oder eines Benutzers delete-a-user
curl -u <user>:<password> -FdeleteAuthorizable= http://localhost:4502/home/users/t/testuser
Löschen einer Gruppe delete-a-group
curl -u <user>:<password> -FdeleteAuthorizable= http://localhost:4502/home/groups/t/testGroup
Sicherung backup
Detaillierte Informationen finden Sie unter Sichern und Wiederherstellen.
OSGi osgi
Starten eines Bundles starting-a-bundle
curl -u <user>:<password> -Faction=start http://localhost:4502/system/console/bundles/<bundle-name>
Beenden eines Bundles stopping-a-bundle
curl -u <user>:<password> -Faction=stop http://localhost:4502/system/console/bundles/<bundle-name>
Dispatcher dispatcher
Annullieren des Caches invalidate-the-cache
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 evict-the-cache
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 replication-agent
Prüfen des Status eines Agenten check-the-status-of-an-agent
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 delete-an-agent
curl -X DELETE http://localhost:4502/etc/replication/agents.author/replication99 -u <user>:<password>
Erstellen eines Agenten create-an-agent
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 pause-an-agent
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 clear-an-agent-queue
curl -u <user>:<password> -F "cmd=clear" -F "name=publish" http://localhost:4502/etc/replication/agents.author/publish/jcr:content.queue.json
Communities communities
Zuteilen und Entziehen von Abzeichen assign-and-revoke-badges
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 msrp-reindexing
Detaillierte Informationen finden Sie unter MSRP – MongoDB Storage Resource Provider.
Sicherheit security
Aktivieren und Deaktivieren von CRXDE Lite enabling-and-disabling-crx-de-lite
Detaillierte Informationen finden Sie unter Aktivieren von CRXDE Lite in AEM.
Datenspeicherbereinigung data-store-garbage-collection
Detaillierte Informationen finden Sie unter Datenspeicherbereinigung.
Integrieren von Analytics und Target analytics-and-target-integration
Detaillierte Informationen finden Sie unter Opt-in für Adobe Analytics und Adobe Target.
Single Sign-On single-sign-on
Senden eines Test-Headers send-test-header
Detaillierte Informationen finden Sie unter Single Sign-On.
Gängige cURL-Befehle zur Inhaltsbearbeitung für AEM common-content-manipulation-aem-curl-commands
Im Folgenden finden Sie eine Liste von AEM-cURL-Befehlen zur Inhaltsbearbeitung.
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 page-management
Aktivieren einer Seite page-activation
curl -u <user>:<password> -X POST -F path="/content/path/to/page" -F cmd="activate" http://localhost:4502/bin/replicate.json
Deaktivieren einer Seite page-deactivation
curl -u <user>:<password> -X POST -F path="/content/path/to/page" -F cmd="deactivate" http://localhost:4502/bin/replicate.json
Aktivieren eines Baumes tree-activation
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 lock-page
curl -u <user>:<password> -X POST -F cmd="lockPage" -F path="/content/path/to/page" -F "_charset_"="utf-8" http://localhost:4502/bin/wcmcommand
Seite entsperren unlock-page
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 copy-page
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 workflows
Detaillierte Informationen finden Sie unter Programmgesteuerte Interaktion mit Workflows.
Sling-Inhalte sling-content
Erstellen eines Ordners create-a-folder
curl -u <user>:<password> -F jcr:primaryType=sling:Folder http://localhost:4502/etc/test
Löschen eines Knotens delete-a-node
curl -u <user>:<password> -F :operation=delete http://localhost:4502/etc/test/test.properties
Verschieben eines Knotens move-a-node
curl -u <user>:<password> -F":operation=move" -F":applyTo=/sourceurl" -F":dest=/target/parenturl/" https://localhost:4502/content
Kopieren eines Knotens copy-a-node
curl -u <user>:<password> -F":operation=copy" -F":applyTo=/sourceurl" -F":dest=/target/parenturl/" https://localhost:4502/content
Hochladen von Dateien mit Sling PostServlet upload-files-using-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 upload-files-using-sling-postservlet-and-specifying-node-name
curl -u <user>:<password> -F"test2.properties=@test.properties" http://localhost:4502/etc/test
Hochladen von Dateien unter Angabe eines Content-Typs upload-files-specifying-a-content-type
curl -u <user>:<password> -F "*=@test.properties;type=text/plain" http://localhost:4502/etc/test
Asset-Bearbeitung asset-manipulation
Detaillierte Informationen finden Sie unter Assets-HTTP-API.