SUR CETTE PAGE
Exemple : Afficher les informations de nom d’hôte DNS à l’aide d’un script Op
Cet exemple utilise un script op pour afficher les informations DNS (Domain Name System) d’un équipement de votre réseau.
Exigences
Cet exemple utilise un équipement exécutant Junos OS.
Présentation et script op
Ce script affiche les informations DNS d’un équipement de votre réseau. Le script offre une légère amélioration par rapport à la show host hostname
commande, car vous n’avez pas besoin d’entrer un nom d’hôte ou une adresse IP pour afficher les informations DNS pour l’équipement que vous utilisez actuellement.
Il n’y a pas d’équivalent XML (Junos Extensible Markup Language) pour la show host hostname
commande. Par conséquent, ce script utilise la show host hostname
commande directement plutôt que d’utiliser un appel de procédure à distance (RPC).
Le script est fourni en deux versions distinctes, l’une utilisant l’élément <xsl:choose>
et l’autre utilisant la jcs:first-of()
fonction. Les deux versions acceptent le même argument et produisent le même résultat. Chaque version est affichée dans les syntaxes XSLT et SLAX.
Syntaxe XSLT À l’aide de l’élément <xsl:choose>
<?xml version="1.0" standalone="yes"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:junos="http://xml.juniper.net/junos/*/junos" xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> <xsl:import href="../import/junos.xsl"/> <xsl:variable name="arguments"> <argument> <name>dns</name> <description>Name or IP address of a host</description> </argument> </xsl:variable> <xsl:param name="dns"/> <xsl:template match="/"> <op-script-results> <xsl:variable name="query"> <xsl:choose> <xsl:when test="$dns"> <command> <xsl:value-of select="concat('show host ', $dns)"/> </command> </xsl:when> <xsl:when test="$hostname"> <command> <xsl:value-of select="concat('show host ', $hostname)"/> </command> </xsl:when> </xsl:choose> </xsl:variable> <xsl:variable name="result" select="jcs:invoke($query)"/> <xsl:variable name="host" select="$result"/> <output> <xsl:value-of select="concat('Name: ', $host)"/> </output> </op-script-results> </xsl:template> </xsl:stylesheet>
Syntaxe XSLT À l’aide de la fonction jcs:first-of()
<?xml version="1.0" standalone="yes"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:junos="http://xml.juniper.net/junos/*/junos" xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> <xsl:import href="../import/junos.xsl"/> <xsl:variable name="arguments"> <argument> <name>dns</name> <description>Name or IP address of a host</description> </argument> </xsl:variable> <xsl:param name="dns"/> <xsl:template match="/"> <op-script-results> <xsl:variable name="target" select="jcs:first-of($dns, $hostname)"/> <xsl:variable name="query"> <command> <xsl:value-of select="concat('show host ', $target)"/> </command> </xsl:variable> <xsl:variable name="result" select="jcs:invoke($query)"/> <xsl:variable name="host" select="$result"/> <output> <xsl:value-of select="concat('Name: ', $host)"/> </output> </op-script-results> </xsl:template> </xsl:stylesheet>
Syntaxe SLAX À l’aide de l’élément <xsl:choose>
version 1.0; 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"; var $arguments = { <argument> { <name> "dns"; <description> "Name or IP address of a host"; } } param $dns; match / { <op-script-results> { var $query = { if ($dns) { <command> 'show host ' _ $dns; } else if ($hostname) { <command> 'show host ' _ $hostname; } } var $result = jcs:invoke($query); var $host = $result; <output> 'Name: ' _ $host; } }
Syntaxe SLAX À l’aide de la fonction jcs:first-of()
version 1.0; 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"; var $arguments = { <argument> { <name> "dns"; <description> "Name or IP address of a host"; } } param $dns; match / { <op-script-results> { var $target = jcs:first-of($dns, $hostname); var $query = { <command> 'show host ' _ $target; } var $result = jcs:invoke($query); var $host = $result; <output> 'Name: ' _ $host; } }
Configuration
Procédure
Procédure étape par étape
Pour télécharger, activer et tester le script :
Copiez le script XSLT ou SLAX dans un fichier texte, nommez le fichier hostname.xsl ou hostname.slax selon le cas, et copiez-le dans le répertoire /var/db/scripts/op/ sur l’équipement.
En mode configuration, incluez l’instruction
file
au niveau de la[edit system scripts op]
hiérarchie et hostname.xsl ou hostname.slax selon le cas.[edit system scripts op] user@host# set file hostname.(slax | xsl)
Émettez la
commit and-quit
commande pour valider la configuration et revenir en mode opérationnel.[edit] user@host# commit and-quit
Exécutez le script opérationnel en publiant la commande du
op hostname <dns (hostname | address)>
mode opérationnel.
Vérification
Vérification de l’exécution du script de validation
But
Vérifiez que le script se comporte comme prévu.
Action
Lorsque vous effectuez la commande du op hostname
mode opérationnel sans option, les dns
informations DNS s’affichent pour l’équipement local :
user@host1> op hostname Name: host1 has address 10.168.71.246
Lorsque vous émettez la op hostname dns hostname
commande, les informations DNS s’affichent pour l’équipement spécifié :
user@host1> op hostname dns router1 Name: router1 has address 10.168.71.249
Lorsque vous émettez la op hostname dns address
commande, les informations DNS s’affichent pour l’adresse spécifiée :
user@host1> op hostname dns 10.168.71.249 Name: 249.71.168.10.IN-ADDR.ARPA domain name pointer router1