Paramètres et variables globaux dans les scripts d’automatisation de Junos OS
Junos OS fournit automatiquement une entrée aux scripts d’automatisation lorsqu’ils sont exécutés. Le script peut faire référence à cette entrée, qui inclut des informations spécifiques à l’appareil sur l’environnement d’exécution du script, telles que le nom d’hôte de l’appareil, le type de script et l’utilisateur exécutant le script. Ces informations sont utiles pour créer des scripts qui répondent à une variété de scénarios complexes.
Les scripts SLAX et XSLT qui importent le fichier junos.xsl peuvent référencer ces informations à l’aide de la $junos-context
variable globale, qui est un ensemble de nœuds. Le fichier d’importation junos.xsl déclare également plusieurs paramètres globaux prédéfinis qui permettent aux scripts de référencer plus facilement un sous-ensemble de ces informations. Les scripts Python peuvent référencer ces informations via le junos.Junos_Context
dictionnaire, qui doit être importé dans le script.
Pour utiliser les paramètres prédéfinis ou la variable globale dans les scripts SLAX et XSLT, vous devez importer le fichier junos.xsl en incluant la balise dans la <xsl:import>
déclaration de feuille de style d’un script XSLT ou en incluant l’instruction import
dans un script SLAX et en spécifiant l’emplacement du fichier junos.xsl , comme indiqué dans l’exemple de code suivant :
Syntaxe XSLT
<?xml version="1.0"?> <xsl:stylesheet version="1.0"> <xsl:import href="../import/junos.xsl"/> ... </xsl: stylesheet>
Syntaxe SLAX
version 1.2; import "../import/junos.xsl";
Python
Pour référencer les informations dans des scripts Python, importez le Junos_Context
dictionnaire.
from junos import Junos_Context
L’entrée de script est décrite en détail dans les sections suivantes :
Paramètres globaux disponibles dans les scripts SLAX et XSLT
Plusieurs paramètres globaux prédéfinis peuvent être utilisés dans les scripts d’automatisation SLAX et XSLT qui importent le fichier junos.xsl . Les paramètres fournissent des informations sur l’environnement Junos OS. Le Tableau 1 décrit les arguments intégrés.
Nom |
Description |
Exemple |
---|---|---|
$hostname |
Nom d’hôte de l’équipement local |
Tokyo |
$localtime |
Heure locale d’exécution du script |
Fri Dec 10 11:42:21 2010 |
$localtime-ISO |
Heure locale, au format ISO, au moment de l’exécution du script |
2010-12-10 11:42:21 PST |
$product |
Modèle de l’appareil local |
M10i |
$script |
Nom de fichier du script en cours d’exécution |
test.slax |
$user |
Nom local de l’utilisateur exécutant le script |
racine |
Les paramètres globaux prédéfinis sont déclarés dans le fichier junos.xsl . Vous n’avez pas besoin de déclarer ces paramètres dans un script pour les utiliser. Accédez à la valeur des paramètres globaux d’un script en préfixant le nom du paramètre par le signe dollar ($), comme illustré dans l’exemple suivant :
Syntaxe SLAX :
if ($user != "root") { var $script-message = $user _ " does not have permission to execute " _ $script; expr jcs:output($script-message); }
Syntaxe XSLT :
<xsl:if test="$user != 'root'"> <xsl:variable name="script-message" select="concat($user, ' does not have permission to execute ', $script)"/> <xsl:value-of select="jcs:output($script-message)"/> </xsl:if>
Variable globale disponible dans les scripts d’automatisation
Les scripts de validation, d’événement et d’opération peuvent accéder à des informations d’environnement spécifiques qui leur sont fournies lors de l’exécution. Pour accéder à ces informations, les scripts Python doivent importer et référencer le junos.Junos_Context
dictionnaire, et les scripts SLAX et XSLT qui importent le fichier junos.xsl peuvent référencer la $junos-context
variable globale. et Junos_Context
contiennent des informations identiques, $junos-context
mais dans un format adapté au langage de script respectif.
La $junos-context
variable est un ensemble de noeuds qui contient le <junos-context>
noeud et la hiérarchie suivante, qui est commune et imbriquée dans l’arborescence source de tous les scripts :
<junos-context> <chassis></chassis> <hostname></hostname> <localtime></localtime> <localtime-iso></localtime-iso> <pid></pid> <product></product> <re-master/> <routing-engine-name></routing-engine-name> <script-type></script-type> <tty></tty> <user-context> <class-name></class-name> <login-name></login-name> <uid></uid> <user></user> </user-context> </junos-context>
De plus, des informations spécifiques au script sont disponibles en fonction du type de script exécuté. Pour les scripts op, l’élément <op-context>
est également inclus dans l’arborescence source fournie à un script op :
<junos-context> <op-context> <via-url/> </op-context> </junos-context>
Pour les scripts de commit, l’élément <commit-context>
est également inclus dans l’arborescence source fournie à un script de commit :
<junos-context> <commit-context> <commit-comment>"This is a test commit"</commit-comment> <commit-boot/> <commit-check/> <commit-sync/> <commit-confirm/> <database-path/> </commit-context> </junos-context>
Le Tableau 2 identifie chaque noeud de l’ensemble $junos-context
de noeuds variables, fournit une brève description du noeud et donne des exemples de valeurs pour tous les éléments qui ne sont pas entrés dans un script en tant que balise vide.
Noeud parent |
Noeud |
Description |
Exemple de contenu |
---|---|---|---|
<junos-context> |
<châssis> |
Spécifie si le script est exécuté sur un composant d’une matrice de routage, le domaine du système racine (RSD) ou un domaine du système protégé (PSD) |
scc, lcc (matrice TX)psd, rsd (JCS)autres |
<nom d’hôte> |
Nom d’hôte de l’équipement local |
Tokyo |
|
<heure locale> |
Heure locale d’exécution du script |
Fri Dec 10 11:42:21 2010 |
|
<localtime-iso> |
Heure locale, au format ISO, au moment de l’exécution du script |
2010-12-10 11:42:21 PST |
|
<pid> |
ID de processus cscript |
5257 |
|
<produit> |
Modèle de l’appareil local |
M10i |
|
<re-master/> |
Élément vide inclus si le script est exécuté sur le moteur de routage principal |
||
<nom-moteur-de-routage> |
Moteur de routage sur lequel le script est exécuté |
re0 |
|
<type de script> |
Type de script en cours d’exécution |
Op |
|
<tty> |
TTY de la session de l’utilisateur |
/dev/ttyp1 |
|
<junos-context> <contexte-utilisateur> |
<nom_de-classe> |
Classe de connexion de l’utilisateur exécutant le script |
super-utilisateur |
<nom-de-connexion> |
Nom de connexion de l’utilisateur exécutant le script. Pour l’accès AAA , il s’agit du nom d’utilisateur RADIUS/TACACS. |
jsmith (en anglais seulement) |
|
<uid> |
Numéro d’identification de l’utilisateur exécutant le script, tel que défini dans la configuration de l’appareil |
2999 |
|
<utilisateur> |
Nom local de l’utilisateur exécutant le script. Junos OS utilise le nom local pour l’authentification. Elle peut différer de celle utilisée pour l’authentification |
racine |
|
<junos-context> <op-context> (Scripts OP uniquement) |
<via-URL> |
Élément vide inclus si le script d’opération à distance est exécuté à l’aide de la |
|
<junos-context> <commit-context> (scripts de commit uniquement) |
<commit-boot/> |
Élément vide inclus lorsque le commit se produit au démarrage |
|
<commit check/> |
Elément vide inclus lors de l’exécution d’un |
||
<commit-comment> |
Commentaire de l’utilisateur concernant le commit |
Commit pour résoudre le problème de transfert |
|
<commit-confirm/> |
Elément vide inclus lors de l’exécution d’un |
||
<commit-sync/> |
Elément vide inclus lors de l’exécution d’un |
||
<chemin-de-la-base/> |
Elément spécifiant l’emplacement de la configuration candidate pré-héritage de la session. Pour les sessions de configuration normales, la valeur de l’élément est l’emplacement de la base de données candidate normale. Pour les sessions de configuration privées, la valeur de l’élément est l’emplacement de la base de données candidate privée. Lorsque l’attribut |
La $junos-context
variable est un ensemble de nœuds. Par conséquent, vous pouvez accéder aux éléments enfants tout au long d’un script en incluant l’expression XPath appropriée. Le script de validation SLAX suivant écrit un message dans le fichier journal système si la validation est effectuée lors du démarrage initial. Le message se voit attribuer une valeur d’installation de et une valeur de gravité de daemon
info
. Pour plus d’informations, consultez syslog().
version 1.2; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "../import/junos.xsl"; match configuration { if ($junos-context/commit-context/commit-boot) { expr jcs:syslog("daemon.info", "This is boot-time commit"); } else { /* Do this ... */ } }
Les scripts Python doivent importer le Junos_Context
dictionnaire à partir du junos
module pour accéder aux informations d’environnement fournies aux scripts. Les noms des clés dans le Junos_Context
dictionnaire sont identiques aux noms des nœuds indiqués dans le $junos-context
Tableau 2. Noeuds avec des éléments enfants imbriqués sous le junos-context
noeud, tels que user-context
, op-context
et commit-context
mappés à des éléments dans Junos_Context
, où la clé est le nom du noeud et la valeur est un dictionnaire des éléments enfants du noeud. Par exemple:
'user-context': {'login-name': 'bsmith', 'user': 'bsmith', 'class-name': 'j-superuser', 'uid': '9999'}
L’exemple de sortie suivant affiche le dictionnaire d’un Junos_Context
script op qui a été exécuté localement. Notez que l’entrée du script op contient la op-context
clé qui, dans ce scénario, est vide.
{'product': 'm7i', 'user-context': {'login-name': 'bsmith', 'user': 'bsmith', 'class-name': 'j-superuser', 'uid': '9999'}, 'routing-engine-name': 're0', 'script-type': 'op', 're-master': None, 'hostname': 'R1', 'pid': '7136', 'tty': '/dev/ttyp1', 'chassis': 'others', 'op-context': ' ', 'localtime': 'Thu Jan 22 11:45:47 2015', 'localtime-iso': '2015-01-22 11:45:47 PST'}
L’exemple de sortie suivant affiche le dictionnaire d’un Junos_Context
script de validation qui a été exécuté au cours d’une commit check
opération. Notez que l’entrée du script de commit contient la commit-context
clé.
{'product': 'm7i', 'user-context': {'login-name': 'bsmith', 'user': 'bsmith', 'class-name': 'j-superuser', 'uid': '9999'}, 'routing-engine-name': 're0', 'script-type': 'commit', 're-master': None, 'hostname': 'R1', 'pid': '11201', 'tty': '/dev/ttyp1', 'commit-context': {'database-path': '/var/run/db/juniper.db', 'commit-check': None}, 'chassis': 'others', 'localtime': 'Thu Jan 22 16:23:55 2015', 'localtime-iso': '2015-01-22 16:23:55 PST'}
Pour accéder à des valeurs individuelles dans le dictionnaire, spécifiez le nom de la clé. Par exemple:
Junos_Context['hostname'] Junos_Context['user-context']['class-name']