Problème

Vous avez par inadvertance arrêté le service HTTP ou la console Web et ne pouvez plus accéder au système. Ou votre référentiel s’est bloqué et la console Web ne vous permet pas de réparer facilement le référentiel. Ou, vous cherchez la console CRX antérieure de CRX.

Résolution

Ce document explique comment configurer un shell de ligne de commande au format texte qui vous permet de résoudre ces problèmes.

Lecteurs clés

La solution consiste à utiliser l’interface de ligne de commande à la structure OSGi fournie par Apache Felix Gogo Shell. Comme en mode personnalisé dans OSGi world, Gogo Shell est fourni avec plusieurs lots :

  • Apache Felix Gogo Runtime -- L'exécution shell centrale. Ce lot fournit l’API principale et la fonctionnalité d’intégration pour exécuter un shell de commande.
  • Apache Felix Gogo Command -- Commandes de base pour la maintenance de la structure OSGi. Ce lot fournit des commandes permettant d'inspecter et de manipuler une structure OSGi et ses lots.
  • Apache Felix Gogo Shell -- La fonctionnalité de texte shell. Ce lot fournit un shell local de base (désactivé par défaut dans les applications basées sur Granite) sur lequel se basent les fonctionnalités à distance.
  • Module externe de la console Web Gogo Shell d'Apache Felix - Prise en charge du texte dans la console Web. Ce lot agrandit le lot de Shell Gogo en exposant le texte du conteneur dans la console Web.
  • Apache Felix Remote Shell -- Prise en charge des shell de texte Telnet. Ce lot agrandit le lot de Shell Gogo en exposant le texte du conteneur par TCP/IP.

Plus d'informations sur Gogo Shell sont disponibles sur le site Apache Felix.

Eléments de base requis

Les lots principaux — Exécution, Commande et Shell — sont indispensables et toujours nécessaires.

Accès à la console Web

Si l'accès à la console Web est toujours possible, l'utilisation du plugin Gogo Shell pour la console Web est recommandé pour l'accès à distance.

Access Telnet

Si l’accès à la console Web n’est plus possible -- par exemple, si le service HTTP est inactif ou la console Web elle-même ne fonctionne pas - vous pouvez installer le lot de shell distant.

Contrairement au plugin Gogo Shell pour la console Web, le lot de shell distant n’autorise pas un véritable accès à distance. Pour des raisons de sécurité, le lot Shell distant par défaut lit le port 6666 sur hôte local (127.0.0.1) uniquement. L'accès à ce port se fait uniquement dans la même boîte de dialogue.

Considérations sur la sécurité

Console Web

L'accès à la console Web Gogo Shell est protégé comme tout élément de la console Web, par le biais de l'authentification simple et du contrôle d'accès de base. Par exemple, le fournisseur de sécurité de la console Web Sling d'origine autorise uniquement l'administrateur à accéder à la console Web.

En conséquence, la console Web doit bien sûr de ne pas être exposée par le dispatcher à l'Internet public.

Telnet

Le lot de shell distant n’implémente aucun contrôle d’accès. La seule sécurité mise en oeuvre est que, par défaut, seul l'hôte local (127.0.0.1) est accessible. En d'autres termes, un shell à distance sur l'hôte (par exemple une session SSH) est nécessaire avant de pouvoir utiliser telnet dans le Shell à distance.

De plus, le lot de shell distant n’est pas destiné à être actif par défaut et sur le long terme. Le lot doit être installé en cas d’urgence et doit être désinstallé après résolution du problème afin d’éviter tout danger potentiel. Aucune fonctionnalité régulière ne doit être basée uniquement sur le lot de Shell distant.

Installation

Installation du module de contenu

Si le référentiel de JCR reste fonctionnel et est accessible via HTTP, le plus facile est d'installer le module de contenu Gogo Shell. Ce module de contenu fournit les lots d’exécution, de commande et Shell Gogo ainsi que le module externe Gogo de la console Web.

Il n’inclut pas le programme d’installation distant en raison de problèmes de sécurité et parce qu’il n’est pas réellement nécessaire dans ce cas.

Configuration de la console Web

Si le référentiel de JCR n'est pas disponible, mais que la console Web l'est, vous pouvez télécharger et décompresser le module de contenu Gogo Shell ci-joint et télécharger les lots contenus dans la console Web.

Là encore, le lot de shell distant ne doit pas être installé dans ce cas en raison de problèmes de sécurité et parce qu’il n’est pas réellement nécessaire.

Configuration de sauvegarde

En cas de résolution des problèmes urgents où ni le référentiel JCR ni la console Web ne sont utilisables ou accessibles, vous devrez revenir à l’installation locale de Gogo Shell. Cette installation requiert l’accès au système de fichiers et au shell.

Les étapes d’installation de base sont les suivantes :

  1. Obtenez une session de texte basée sur le système exécutant l’application Granite
  2. Créez un dossier d'installation dans celui de l'application Granite (généralement sous crx-quickstart
  3. Téléchargez et décompressez le module de contenu Gogo Shell joint.
  4. Copiez les lots Gogo exécution, commande et shell dans le dossier crx-quickstart/install.
  5. Téléchargez le lot de shell distant ci-joint et copiez-le dans le dossier crx-quickstart/install.

L'installateur OSGi s'exécutant dans l'application Granite installe et lance automatiquement les lots du dossier crx-quickstart/install. Quelques secondes peuvent être nécessaires pour cela.

Une fois l'installation terminée, vous pouvez accéder via telnet à Gogo Shell sur le port 6666 par défaut : 

$ telnet localhost 6666
Trying 127.0.0.1...
Connecté à l'hôte local.
Le caractère d'échappement est '^].
____________________________
Bienvenue sur Apache Felix Gogo

g !

Si tout se passe bien, l'invite de commande suivante s'affiche — g ! — de Gogo Shell où vous pouvez exécuter des commandes comme aide (pour obtenir une liste des commandes disponibles) et lb (pour répertorier les lots actifs).

Voir le site Apache Felix pour plus d'informations sur Gogo Shell.

Récupération à partir d’un lot de services HTTP arrêté.

Pour récupérer à partir d'un arrêt inattendu du lot de service HTTP, procédez comme suit :

  1. Installez les lots de Shell Gogo comme expliqué ci-dessus dans la section Configuration de sauvegarde
  2. Lancez la session shell à l'aide de la commande telnet :
    $ telnet localhost 6666
    Trying 127.0.0.1...
    Connecté à l'hôte local.
    Le caractère d'échappement est '^].
    ____________________________

    Bienvenue sur Apache Felix Gogo g !
  3. Utilisez la commande lb pour répertorier le lot de service HTTP. Nous supposons que le nom de ce lot comporte http service, nous utilisons donc cela (entre guillemets) en tant qu'argument pour la commande lb :
    g! lb "http service"
    START LEVEL 30
    ID|State |Level|Name
    21|Resolved | 5|Day CQSE HTTP Service (4.1.32)
    g!

  4. Dans la sortie, nous constatons que le lot de services HTTP CQSE n’est pas actif. Nous utilisons la commande start à l'aide d'un ID de lot de 21 en tant qu'argument :
    g! start 21
    g!
  5. Jusque là ça va. Vérifions les résultats :
    g! lb "http service"
    START LEVEL 30
    ID|State |Level|Name
    21|Active | 5|Day CQSE HTTP Service (4.1.32)
    g!
  6. Utilisez la commande lb pour vérifier l'exécution des autres lots. Veillez particulièrement à vérifier que la console et les modules externes de gestion Web sont actifs :
    g! console lb
    START LEVEL 30
    ID|State |Level|Name
    24|Active | 5|Apache Felix Web Management Console (3.4.1.R1334005)
    25|Active | 5|Apache Felix Web Console Service Component Runtime/Declarative Services Plugin (1.0.0.R1201749)
    26|Active | 5|Apache Felix Web Console Event Plugin (1.0.2)
    27|Active | 5|Apache Felix Web Console Memory Usage Plugin (1.0.2)
    28|Active | 5|Apache Felix Web Console Package Admin Service Plugin (0.0.1.R1233342)
    55|Active | 15|Apache Sling Web Console Security Provider (1.0.0)
    74|Active | 20|Adobe Granite Workflow Console (0.0.4)
    138|Active | 20|Apache Felix Web Gogo Shell Plugin (0.0.1.R1238480)
    g!
    Tout va très bien ici. Il n'y a plus rien à faire.
  7. Vous pouvez fermer le shell en tapant Ctrl-D.
  8. Vous devez à présent désinstaller le lot Shell distant en le supprimant du dossier crx-quickstart/install (vous pouvez effectuer une réinstallation le cas échéant).

Vous devez à présent pouvoir accéder à l'application dans votre navigateur.

Accéder au référentiel

À partir de CRX 2.3.18 (inclus dans la mise à jour 1 CQ 5.5) le référentiel est accessible via le shell gogo. Cette opération peut être effectuée avec la commande telnet décrite ci-dessus ou via un navigateur web (http://localhost:4502/system/console/gogo). Toutes les commandes CRX ont un préfixe crx:. Vous pouvez les répertorier en tapant crx:help.

Commandes disponibles :
add         Ajoute un nouveau nœud ou nœud enfant.
le bundlecheck vérifie les lots de nœuds
cd Modifie le nœud de travail en cours.
check Vérifie le référentiel
checkin Effectue une vérification sur un nœud.
checkout Effectue une extraction sur un nœud.
clone Duplication d'un nœud.
connect Se connecte à un CRXRepository.
cp Copie un nœud.
echo Imprime les arguments sur la console
help Imprime l'aide
login Active une connexion sur le référentiel.
logout Ferme la session sur le référentiel.
ls Imprime la liste de nœuds des propriétés.
mixin Manipule l'ensemble des types de mixin d'un nœud.
mv          Déplace un nœud.
patch Corrige les données basses d'état d'un élément.
print Imprime la définition d'un nœud ou d'une propriété.
pwd Imprime le chemin actuel.
refresh Actualise un nœud, propriété ou session
rm Supprime un nœud ou une propriété.
save Enregistre un nœud, propriété ou session
spool Copie un espace de travail.
stat Imprime les informations de bas niveau (de persistance) d'un nœud ou d'une propriété.
workspace Contrôle les espaces de travail

Chemins :
Les chemins peuvent être spécifiés
- par rapport au cwd (p.ex. './foo/bar')
- dans l'absolu (ex. '/foo/bar')
- ou en lien avec l'uuid (ex. '[cafebabe-cafe-babe-cafe-babecafebabe]/foo/bar')

Utilisez « help -d » pour répertorier les détails de toutes les commandes ou
« help <cmd> » pour une commande spécifique.

Si vous souhaitez sécuriser les incohérences de référentiel, vous pouvez essayer :

  1. Lancez la console
    $ telnet localhost 6666
    Trying 127.0.0.1...
    Connecté à l'hôte local.
    Le caractère d'échappement est '^].
    ____________________________
    Bienvenue sur Apache Felix Gogo
  2. connexion à l'espace de travail par défaut avec l'identifiant d'administrateur
    g! crx:login admin admin
    connexion réussie en tant qu'administrateur dans l'espace de travail crx.default
  3. afficher la description de la méthode de bundlecheck
    g! crx:help bundlecheck
    Synopsis:
    bundlecheck [options] [path | uuid]

    Description :
    Vérifie le lot de nœud actif, le lot d'un chemin, le lot
    d'un nœud UUID ou tous les lots stockés (sans prendre en compte la hiérarchie d'information). Cette commande
    fonctionne uniquement avec les gestionnaires de persistance de lot (par exemple. lot BD et TarPM).

    Options :
    a vérification de tous les lots dans le stockage PM (-r ne s'applique pas)
    -r vérification récursive des sous-nœuds
    -f tentative de correction des erreurs sur nœud enfant
    -p impression des chemins d'accès aux nœuds et vérification des rapports parent (plus lent)
    -x vérification des références de nœud (plus lent)
    -X vérification des références de nœud et suppression des éléments invalides (plus lent)
    -e impression des erreurs uniquement (plus rapide)
    -o <file> sortie des images mémoire vers le fichier.
    -l <path> déplacement de nœuds orphelins vers le nœud parent perdu+trouvé.
  4. afficher le répertoire racine
    g! crx:ls
    + /
    + bin
    + rep:repoPolicy
    + rep:policy
    + jcr:system
    + var
    + libs
    + etc
    + apps
    + home
    + tmp
    + content
    - sling:resourceType
    - jcr:mixinTypes
    - sling:target
    - jcr:primaryType
  5. créez un fichier perdu + retrouvé
    g! crx:add lost+found
  6. enregistrez la session
    g! crx:save
  7. revérifiez la structure de répertoires racines (revérifiez le fichier perdu + retrouvé)
    g ! crx:ls

    + /
    + bin
    + rep:repoPolicy
    + rep:policy
    + jcr:system
    + var
    + libs
    + etc
    + apps
    + home
    + tmp
    + content
    + lost+found
    - sling:resourceType
    - jcr:mixinTypes
    - sling:target
    - jcr:primaryType

  8. effectuez bundlecheck :
    g! crx:bundlecheck -rfel lost+found
    à l'aide du nœud b006af08-d78c-44b3-b847-58472e7962cc comme parent pour les nœuds orphelins.
    vérifié 1 000 noeuds avec 0 erreur(s) jusqu'à présent.
    ...
    vérifié 66 000 nœuds avec 0 erreur(s) jusqu'à présent.
    Contrôle de cohérence de 66 717 nœuds terminés en 110 015 millisecondes.
    Aucune erreur n'a été trouvée.

Telechargement

* org.apache.felix.shell.remote-1.1.2.jar
Lot de Remote Shell (telnetd). N'installez que si la console Web n'est pas accessible. Désinstallez quand ce n'est pas nécessaire.

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne