EN ESTA PÁGINA
Ejemplo: Recuperar la configuración de candidato de herencia previa en una secuencia de comandos de confirmación
En este ejemplo, se muestra cómo construir una secuencia de comandos de confirmación para recuperar la configuración candidata de herencia previa para una sesión de configuración normal o privada.
Requisitos
Enrutamiento, conmutación o dispositivo de seguridad que ejecuta Junos OS versión 12.2 o posterior.
Visión general
En Junos OS, cuando se confirma una configuración candidata , cada secuencia de comandos de confirmación activa la inspecciona. La entrada normal para una secuencia de comandos de confirmación es la configuración candidata posterior a la herencia, en la cual todos los valores de grupo de configuración han sido heredados por sus destinos y las partes inactivas de la configuración se han eliminado.
A veces, una secuencia de comandos de confirmación requiere acceso a la configuración del candidato de herencia previa en lugar de la configuración posterior a la herencia que recibe de forma predeterminada. Dado que las sesiones de configuración normal utilizan la base de datos de candidatos normales y las sesiones de configuración privadas usan una base de datos de candidatos privada y dedicada, la ubicación de la base de datos del candidato depende del tipo de sesión.
Dentro de una secuencia de comandos de confirmación, al invocar la <get-configuration>
llamada a procedimiento remoto (RPC) con el database="candidate"
atributo recupera la configuración normal del candidato de herencia previa. El <get-configuration>
RPC también tiene un database-path
atributo, que se utiliza para especificar la ubicación de la base de datos de configuración previa a la herencia para una sesión de configuración normal o privada. Este atributo es una alternativa al database
atributo e indica qué archivo de base de datos se va a cargar. Los scripts de confirmación pueden invocar la <get-configuration>
RPC con el database-path
atributo para recuperar la configuración de candidato de herencia previa específica para esa sesión.
La variable $junos-context
global contiene el commit-context/database-path
elemento, que almacena la ubicación de la configuración candidata de herencia previa a la sesión. En una sesión de configuración normal, el <database-path>
elemento contiene la ubicación de la base de datos candidata normal:
<junos-context> <commit-context> <database-path>/var/run/db/juniper.db</database-path> </commit-context> </junos-context>
En una sesión de configuración privada, el <database-path>
elemento contiene la ubicación de la base de datos de candidato privada específica de la sesión. Por ejemplo:
<junos-context> <commit-context> <commit-private/> <database-path>/var/run/db/private/juniper-1396.db</database-path> </commit-context> </junos-context>
Para crear una secuencia de comandos de confirmación que recupere la configuración de candidato de herencia previa específica de esa sesión, incluya la <get-configuration>
RPC en la secuencia de comandos de confirmación y establezca el <database-path>
atributo en $junos-context/commit-context/database-path
. En las sesiones de configuración normales, la secuencia de comandos de confirmación recupera la configuración candidata normal previa a la herencia y, en el caso de las sesiones de configuración privadas, la secuencia de comandos de confirmación recupera la configuración de candidato privada y previa a la herencia.
Si una secuencia de comandos de confirmación incluye los database
atributos y los database-path
de la <get-configuration>
etiqueta, el database
atributo tiene prioridad.
Configuración
Configuración del script de confirmación
Procedimiento paso a paso
Para construir una secuencia de comandos de confirmación que recupere la configuración del candidato de herencia previa específica de esa sesión:
En un editor de texto, agregue la placa de secuencia de comandos de confirmación a un archivo.
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"; match configuration { }
Cree una variable que almacene la
<get-configuration>
RPC con eldatabase-path
atributo establecido en$junos-context/commit-context/database-path
.var $rpc = <get-configuration database-path=$junos-context/commit-context/database-path>;
Agregue una instrucción que invoque la
<get-configuration>
RPC y almacene la configuración resultante en una variable.var $config = jcs:invoke( $rpc );
-
Haga referencia a los niveles de jerarquía y las instrucciones deseados en la configuración candidata de herencia previa mediante construcciones XPath normales, por ejemplo:
var $hostname = $config/system/host-name;
Incluya las instrucciones necesarias para aplicar las reglas de configuración personalizadas durante el proceso de confirmación.
Copie el script al directorio /var/run/scripts/commit en el dispositivo.
En el modo de configuración, configure la
file
instrucción para habilitar la secuencia de comandos de confirmación.[edit system scripts commit] user@R1# set file script-name.slax
Emita el
commit
comando para confirmar la configuración.[edit] user@R1# commit
La secuencia de comandos de confirmación se ejecuta durante la operación de confirmación.
Resultados
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"; match configuration { var $rpc = <get-configuration database-path=$junos-context/commit-context/database-path>; var $config = jcs:invoke( $rpc ); ... <!-- commit script rules --> }