Utiliser cURL avec AEM using-curl-with-aem

CAUTION
AEM 6.4 a atteint la fin de la prise en charge étendue et cette documentation n’est plus mise à jour. Pour plus d’informations, voir notre période de support technique. Rechercher les versions prises en charge here.

Les administrateurs ont souvent besoin d’automatiser ou de simplifier des tâches courantes sur un système. Dans AEM, par exemple, la gestion des utilisateurs, l’installation de packages et la gestion des lots OSGi sont des tâches qui doivent généralement être effectuées.

En raison de la nature RESTful de le framework Sling sur laquelle repose AEM, pratiquement toutes les tâches peuvent se réduire à l’appel d’une adresse URL. cURL peut être utilisé pour exécuter de tels appels d’URL et peut s’avérer un outil utile pour les administrateurs d’AEM.

Qu’est-ce que cURL ? what-is-curl

cURL est un outil de ligne de commande Open Source utilisé pour manipuler des adresses URL. Il prend en charge de nombreux protocoles Internet, tels que HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, LDAP, DAP, DICT, TELNET, FILE, IMAP, POP3, SMTP et RTSP.

Initialement publié en 1997, cURL est un outil bien établi et largement répandu pour obtenir ou envoyer des données en utilisant la syntaxe de l’adresse URL. Le nom cURL signifiait à l’origine "voir URL".

Compte tenu de la nature RESTful de la structure Sling sur laquelle repose AEM, la plupart des tâches peuvent se réduire à l’appel d’une adresse URL, ce que cURL peut exécuter. Les tâches de manipulation de contenu, comme l’activation des pages et le démarrage de workflows, ainsi que les tâches opérationnelles, comme la gestion de packages et d’utilisateurs, peuvent être automatisées à l’aide de cURL. En outre, vous pouvez créer votre propre cURL pour la plupart des tâches dans AEM.

NOTE
Toute commande AEM exécutée par le biais de cURL doit être autorisée, comme n’importe quel utilisateur, dans AEM. Toutes les listes de contrôle d’accès et tous les droits d’accès sont respectés lors de l’utilisation de cURL pour exécuter une commande AEM.

Téléchargement de cURL downloading-curl

cURL est une partie standard de Mac OS et de certaines distributions Linux. Cependant, il est disponible pour la plupart des systèmes d’exploitation. Vous trouverez les derniers téléchargements à l’adresse https://curl.haxx.se/download.html.

Le référentiel source de cURL est également disponible sur GitHub.

Création d’une AEM compatible avec cURL building-a-curl-ready-aem-command

Il est possible de créer des commandes cURL pour la plupart des opérations dans AEM telles que le déclenchement des workflows, la vérification des configurations OSGi, le déclenchement des commandes JMX, la création d’agents de réplication, etc.

Pour trouver la commande exacte dont vous avez besoin pour votre opération particulière, vous devez utiliser les outils de développement de votre navigateur pour capturer l’appel du POST au serveur lorsque vous exécutez la commande AEM.

Les étapes suivantes décrivent comment effectuer cette opération à l’aide de la création d’une page dans le navigateur Chrome, par exemple.

  1. Préparez l’action à appeler dans AEM. Dans ce cas, nous sommes allés jusqu’à la fin de l’assistant de création de page, mais nous n’avons pas encore cliqué sur Créer.

    chlimage_1-66

  2. Démarrez les outils de développement et sélectionnez l’onglet Network. Cliquez sur le bouton Conserver le journal avant d’effacer la console.

    chlimage_1-67

  3. Cliquez sur Créer dans le Créer une page pour créer le workflow.

  4. Cliquez avec le bouton droit de la souris sur l’action de POST qui en résulte et sélectionnez Copier -> Copier en tant que cURL.

    chlimage_1-68

  5. Copiez la commande cURL dans un éditeur de texte et supprimez tous les en-têtes de la commande, qui commencent par -H (soulignés en bleu dans l’illustration ci-dessous), puis ajoutez le paramètre d’authentification approprié, comme -u <user>:<password>.

    chlimage_1-69

  6. Exécutez la commande cURL à l’aide de la ligne de commande et affichez la réponse.

    chlimage_1-70

Commandes cURL des AEM opérationnelles courantes common-operational-aem-curl-commands

Voici une liste des commandes cURL d’AEM pour les tâches administratives et opérationnelles courantes.

NOTE
Les exemples ci-dessous considèrent qu’AEM est exécuté sur localhost sur le port 4502 et utilise le nom d’utilisateur admin avec le mot de passe admin. D’autres espaces réservés aux commandes sont définis entre crochets.

Gestion des packages package-management

Liste de tous les packages installés

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

Création d’un module 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>

Aperçu d’un module preview-a-package

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

Contenu du package de liste list-package-content

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

Création d’un module build-a-package

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

Réencapsuler un module rewrap-a-package

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

Renommer un module 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

Téléchargement d’un module upload-a-package

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

Installation d’un module install-a-package

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

Désinstallation d’un module uninstall-a-package

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

Suppression d’un module delete-a-package

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

Téléchargement d’un module download-a-package

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

User Management user-management

Création d’un utilisateur create-a-new-user

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

Création d’un groupe create-a-new-group

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

Ajout d’une propriété à un utilisateur existant add-a-property-to-an-existing-user

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

Création d’un utilisateur avec un 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

Création d’un utilisateur en tant que membre d’un groupe 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

Ajout d’un utilisateur à un groupe add-a-user-to-a-group

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

Suppression d’un utilisateur d’un groupe remove-a-user-from-a-group

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

Définition de l’appartenance à un groupe d’utilisateurs set-a-user-s-group-membership

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

Suppression d’un utilisateur delete-a-user

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

Suppression d’un groupe delete-a-group

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

Sauvegarde backup

Pour plus d’informations, consultez Sauvegarde et restauration.

OSGi osgi

Démarrage d’un lot starting-a-bundle

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

Arrêt d’un lot stopping-a-bundle

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

Dispatcher dispatcher

Invalidation du cache 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

Extraction du cache 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

Agent de réplication replication-agent

Vérification de l’état d’un agent 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

Suppression d’un agent delete-an-agent

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

Création d’un agent 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

Mettre un agent en pause 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

Effacement d’une file d’attente d’agent 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

Attribution et révocation des badges assign-and-revoke-badges

Pour plus d’informations, consultez Notation et attribution de badges de Communautés.

Pour plus d’informations, consultez Notions fondamentales sur la notation et l’attribution de badges.

Réindexation de MSRP msrp-reindexing

Pour plus d’informations, consultez MSRP – Fournisseur de ressources de stockage MongoDB.

Sécurité security

Activation et désactivation de CRX DE Lite enabling-and-disabling-crx-de-lite

Pour plus d’informations, consultez Activation de CRXDE Lite dans AEM.

Nettoyage de la mémoire du magasin de données data-store-garbage-collection

Pour plus d’informations, consultez Nettoyage de la mémoire de magasin de données.

Intégration d’Analytics à Target analytics-and-target-integration

Pour plus d’informations, consultez Souscription à Adobe Analytics et Target.

Connexion unique single-sign-on

Envoyer l’en-tête de test send-test-header

Pour plus d’informations, consultez Authentification unique.

Manipulation de contenu courant AEM commandes cURL common-content-manipulation-aem-curl-commands

Voici une liste des commandes cURL d’AEM pour la manipulation de contenu.

NOTE
Les exemples ci-dessous considèrent qu’AEM est exécuté sur localhost sur le port 4502 et utilise le nom d’utilisateur admin avec le mot de passe admin. D’autres espaces réservés aux commandes sont définis entre crochets.

Gestion des pages page-management

Activation de page page-activation

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

Désactivation de page page-deactivation

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

Activation d’une arborescence 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

Verrouillage de la page 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

Déverrouiller la page 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

Copie de la page 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

Pour plus d’informations, consultez Interaction avec des workflows par programmation.

Contenu Sling sling-content

Création d’un dossier create-a-folder

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

Suppression d’un noeud delete-a-node

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

Déplacement d’un noeud move-a-node

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

Copie d’un noeud copy-a-node

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

Chargement de fichiers à l’aide de Sling PostServlet upload-files-using-sling-postservlet

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

Chargement de fichiers à l’aide de Sling PostServlet et spécification du nom de noeud upload-files-using-sling-postservlet-and-specifying-node-name

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

Chargement de fichiers spécifiant un type de contenu upload-files-specifying-a-content-type

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

Manipulation de ressources asset-manipulation

Pour plus d’informations, consultez API Assets HTPP.

recommendation-more-help
5ce3024a-cbea-458b-8b2f-f9b8dda516e8