Le contexte dans lequel les commandes sont exécutées constitue l'un des principes fondamentaux de la CLI. Le contexte détermine les éléments du système pouvant être gérés et les commandes disponibles. Les contextes ont une structure en arborescence dans laquelle les contextes peuvent à leur tour contenir des contextes imbriqués. La structure reflète généralement celle des vues de la BUI.
Le contexte initial au moment de la connexion est le contexte root, qui fait office de parent ou d'ancêtre pour tous les contextes. Pour accéder à un contexte, exécutez le nom du contexte en tant que commande. Par exemple, les fonctions disponibles dans la vue Configuration du navigateur sont disponibles dans le contexte configuration de la CLI. Dans le contexte root, vous pouvez y accéder en saisissant directement ce qui suit :
hostname:> configuration hostname:configuration>
Notez que l'invite change pour refléter le contexte, le contexte s'affichant entre le caractère deux-points et le caractère supérieur à dans l'invite.
La commande show affiche les contextes enfant. Par exemple, depuis le contexte configuration :
hostname:configuration> show Children: net => Configure networking services => Configure services version => Display system version users => Configure administrative users roles => Configure administrative roles preferences => Configure user preferences alerts => Configure alerts storage => Configure Storage
Ces contextes enfant correspondent aux vues disponibles sous la vue Configuration dans le navigateur, notamment Réseau, Services, Utilisateurs, Préférences, etc. Pour sélectionner l'un de ces contextes enfant, saisissez son nom :
hostname:configuration> preferences hostname:configuration preferences>
Accédez directement à un contexte subordonné à partir d'un ancêtre en indiquant les contextes intermédiaires, séparés par des espaces. Par exemple, pour accéder directement à configuration preferences à partir du contexte root, saisissez simplement :
hostname:> configuration preferences hostname:configuration preferences>
Certains contextes enfant sont dynamiques, au sens où ils ne correspondent pas à des vues figées dans le navigateur, mais à des entités dynamiques créées par l'utilisateur ou le système. Il existe deux façons d'accéder à ces contextes : vous pouvez utiliser la commande select suivie du nom du contenu dynamique, ou vous pouvez placer le nom du contexte dynamique entre guillemets. La commande list permet d'afficher les noms des contextes dynamiques compris dans un contexte donné. Par exemple, le contexte users est un contexte statique, mais chaque utilisateur constitue un contexte dynamique pour lui-même.
hostname:> configuration users hostname:configuration users> list NAME USERNAME UID TYPE John Doe bmc 12345 Dir Super-User root 0 Loc
Pour sélectionner l'utilisateur nommé bmc, émettez la commande select bmc ou "bmc" :
hostname:configuration users> "bmc" hostname:configuration users bmc>
Dans certains contextes, il est également possible d'utiliser les guillemets, ainsi que les commandes select et destroy pour sélectionner une entité en fonction de ses propriétés. La commande suivante peut par exemple être exécutée pour sélectionner des entrées de journal émises par le module reboot dans le contexte maintenance logs system :
hostname:maintenance logs system> select module=reboot hostname:maintenance logs system entry-034> show Properties: timestamp = 2019-10-14 06:24:41 module = reboot priority = crit text = initiated by root on /dev/console syslogd: going down on signal 15
A l'instar d'autres commandes, la commande select ou les guillemets peuvent être associés à des commandes entraînant un changement de contexte. Par exemple, pour sélectionner l'utilisateur nommé bmc à partir du contexte root :
hostname:> configuration users select bmc hostname:configuration users bmc>
La commande last permet d'accéder directement à un contexte sélectionné ou créé précédemment. L'exemple suivant crée une action de réplication, puis exécute les commandes last et get id pour récupérer l'ID de l'action de réplication. Ensuite, une action différente est sélectionnée et les commandes last et get id permettent de récupérer l'ID de la dernière action de réplication visitée.
Avec la commande last, vous pouvez retourner au dernier noeud visité :
hostname:configuration net interfaces> "igb4" hostname:configuration net interfaces igb4> done hostname:configuration net interfaces> last hostname:configuration net interfaces igb4>
La commande last est aussi utile pour extraire des valeurs ayant été automatiquement définies par l'appareil pendant la création d'un noeud dynamique. Par exemple, chaque action de réplication se voit attribuer un ID par l'appareil lorsqu'elle est créée. En utilisant la commande last avec la commande get id, vous pouvez extraire l'ID sans utiliser le nom de l'action de réplication :
hostname:shares p1/share replication> create hostname:shares p1/share action (uncommitted)> set target=hostname target = hostname (uncommitted) hostname:shares p1/share action (uncommitted)> set pool=p0 pool = p0 (uncommitted) hostname:shares p1/share action (uncommitted)> commit hostname:shares p1/share replication> last get id id = 7034367a-d4d8-e26f-fa93-c3b454e3b595 hostname:shares p1/share replication>
Notez que quand last est combinée avec une autre commande (dans ce cas, get id), la commande est exécutée dans le contexte du dernier noeud visité, mais le noeud actuel reste inchangé.
Parce que last vous permet d'extraire le dernier noeud visité et ses valeurs sans spécifier le nom du noeud, cette commande est particulièrement pratique pour l'écriture de scripts :
script project = 'myproj'; target = 'mytarget'; target_pool = 'notmypool'; run('cd /'); run('shares select ' + project); run('replication'); run('create'); set('target', target); set('pool', target_pool); run('commit'); run('last'); id = get('id'); printf("Sending update for replication action id %s ...", id); run('sendupdate'); while (get('state') != 'idle') { printf("."); run('sleep 1'); } printf("done\n"); .
Pour revenir au contexte précédent, exécutez la commande done :
hostname:configuration> done hostname:>
Cela vous renvoie au contexte précédent, qui n'est pas nécessairement le contexte parent, comme suit :
hostname:> configuration users select bmc hostname:configuration users bmc> done hostname:>
La commande done peut être utilisée à plusieurs reprises pour revenir à des contextes antérieurs :
hostname:> configuration hostname:configuration> users hostname:configuration users> select bmc hostname:configuration users bmc> done hostname:configuration users> done hostname:configuration> done hostname:>
Pour accéder à un contexte parent, utilisez la commande cd. Inspirée de la commande UNIX classique, la commande cd suivie de l'argument ".." permet de revenir au contexte parent :
hostname:> configuration users select bmc hostname:configuration users bmc> cd .. hostname:configuration users>
Et, comme pour la commande UNIX, "cd /" permet d'accéder au contexte root :
hostname:> configuration hostname:configuration> users hostname:configuration users> select bmc hostname:configuration users bmc> cd / hostname:>
De même, toujours à l'instar de la commande UNIX, "cd ../.." permet d'accéder au contexte grand-parent :
hostname:> configuration hostname:configuration> users hostname:configuration users> select bmc hostname:configuration users bmc> cd ../.. hostname:configuration>
Notez que les commandes cd / et cd .. prennent en charge des variations limitées. Pour plus de polyvalence, utilisez les commandes top et up.
Utilisez la commande top pour accéder au contexte root :
hostname:> configuration hostname:configuration> users hostname:configuration users> select bmc hostname:configuration users bmc> top hostname:>
Utilisez la commande top suivie par un nom de contexte pour accéder directement au contexte root indiqué : Par exemple, pour passer directement du contexte configuration users au contexte configuration services, utilisez la commande top configuration services :
hostname:> configuration hostname:configuration> users hostname:configuration users> top configuration services hostname:configuration services>
Lorsque la commande top est associée à un contexte particulier, la commande done peut être utilisée pour revenir au contexte avant l'exécution de la commande top. Dans l'exemple suivant, la première commande done retourne au contexte précédent. La deuxième commande done retourne au contexte avant la commande top. La troisième commande done retourne au contexte deux noeuds avant la commande top.
hostname:> maintenance system hostname:maintenance system> updates hostname:maintenance system updates> top configuration services hostname:configuration services> ftp hostname:configuration services ftp> done hostname:configuration services> done hostname:maintenance system updates> done hostname:>
A l'instar de la commande cd .., la commande up peut être utilisée pour accéder au contexte parent :
hostname:> configuration hostname:configuration> users hostname:configuration users> select bmc hostname:configuration users bmc> up hostname:configuration users>
Vous pouvez également accéder à un contexte n noeuds à partir du contexte actuel en répétant la commande up n fois :
hostname:> configuration hostname:configuration> users hostname:configuration users> select bmc hostname:configuration users bmc> up up hostname:configuration>
Pour retourner à un contexte particulier relatif au contexte parent actuel, saisissez le nom du contexte après la commande up. Aussi, utilisez la commande up up suivie par un nom de contexte pour retourner à un contexte particulier relatif au contexte grand-parent actuel. Par exemple, pour passer du contexte configuration users bmc au contexte configuration services, utilisez la commande up up services :
hostname:> configuration hostname:configuration> users hostname:configuration users> select bmc hostname:configuration users bmc> up up services hostname:configuration services>
Lorsque la commande up est associée à un contexte particulier, la commande done peut être utilisée pour revenir au contexte avant l'exécution de la commande up. Dans l'exemple suivant, la première commande done retourne au contexte avant la commande up. La deuxième commande done retourne au contexte deux noeuds avant la commande up et la troisième commande done retourne au contexte trois noeuds avant la commande up.
hostname:> configuration hostname:configuration> services hostname:configuration services> ftp hostname:configuration services ftp> up http hostname:configuration services http> done hostname:configuration services ftp> done hostname:configuration services> done hostname:configuration> done hostname:>
Les noms des contextes prennent en charge la saisie semi-automatique par tabulation, qu'il s'agisse des contextes statiques (saisie semi-automatique normale basée sur la commande) ou des contextes dynamiques (saisie semi-automatique basée sur la commande select). L'exemple suivant indique comment sélectionner l'utilisateur nommé bmc à partir du contexte root en quinze frappes seulement, au lieu des trente et une normalement requises sans saisie semi-automatique par tabulation :
hostname:> configtab hostname:> configuration utab hostname:> configuration users setab hostname:> configuration users select tab bmc root hostname:> configuration users select btab hostname:> configuration users select bmcenter hostname:configuration users bmc>
Lorsque vous vous trouvez dans un contexte, exécutez des commandes spécifiques au contexte. Par exemple, pour obtenir les préférences de l'utilisateur actuel, exécutez la commande get dans le contexte configuration preferences :
hostname:configuration preferences> get locale = C login_screen = status/dashboard session_timeout = 15 session_annotation = advanced_analytics = false
Si une commande est suivie d'une entrée entraînant un changement de contexte, la commande concernée est exécutée dans le contexte cible, mais le contrôle revient au contexte appelant. Par exemple, pour obtenir les préférences à partir du contexte root sans modifier le contexte, ajoutez la commande get aux commandes de navigation du contexte :
hostname:> configuration preferences get locale = C login_screen = status/dashboard session_timeout = 15 session_annotation = advanced_analytics = false
Lors de la création d'une nouvelle entité dans le système, le contexte associé à la nouvelle entité est fréquemment créé avec l'état uncommitted ("non validé"). Vous pouvez par exemple créer une alerte avec seuil en exécutant la commande create à partir du contexte configuration alerts threshold :
hostname:> configuration alerts thresholds create hostname:configuration alerts threshold (uncommitted)>
La mention (uncommitted) dans l'invite indique qu'il s'agit d'un contexte non validé. Une entité non validée est validée via la commande commit. Toute tentative de quitter un contexte non validé déclenche l'affichage d'une invite de confirmation :
hostname:configuration alerts threshold (uncommitted)> cd / Leaving will abort creation of "threshold". Are you sure? (Y/N)
Lors de la validation d'une entité non validée, les propriétés associées à la nouvelle entité sont validées et une erreur est générée si l'entité ne peut pas être créée. Par exemple, la création d'une nouvelle alerte avec seuil nécessite la spécification d'un nom de statistique, sans quoi une erreur se produit :
hostname:configuration alerts threshold (uncommitted)> commit error: missing value for property "statname"
Pour résoudre ce problème, résolvez l'erreur et retentez la validation :
hostname:configuration alerts threshold (uncommitted)> set statname=cpu.utilization statname = cpu.utilization (uncommitted) hostname:configuration alerts threshold (uncommitted)> commit error: missing value for property "limit" hostname:configuration alerts threshold (uncommitted)> set limit=90 limit = 90 (uncommitted) hostname:configuration alerts threshold (uncommitted)> commit hostname:configuration alerts thresholds> list THRESHOLD LIMIT TYPE STATNAME threshold-000 90 normal cpu.utilization
Rubriques connexes