Utilice el kit de herramientas Java de NETCONF para realizar tareas de configuración
Usar métodos de objeto de dispositivo para cargar cambios de configuración
El objeto de kit de herramientas Device
Java NETCONF tiene métodos para ayudarlo a configurar dispositivos remotos. Cuando sea apropiado, los métodos se sobrecargan para tomar una serie de formatos diferentes.
Para cargar datos de configuración en un dispositivo remoto, el Device
objeto tiene varios métodos que le permiten definir los datos de configuración como un conjunto de comandos del modo de configuración de Junos OS, texto ASCII formateado o elementos de etiqueta Junos XML. Puede proporcionar los datos de configuración en el código de programa o puede hacer referencia a archivos de datos que incluyan los cambios de configuración deseados.
Para configurar una copia privada de la configuración del candidato, llame al openConfiguration("private")
método con el argumento de cadena "private" en el objeto de dispositivo antes de cargar los cambios de configuración. Esto es equivalente al configure private
comando de la CLI de Junos OS. Si omite la llamada al método, los openConfiguration("private")
cambios de configuración se cargan en la copia global de la configuración del candidato.
El método utilizado para cargar los datos de configuración depende del origen y el formato de los datos. En los métodos siguientes, el argumento loadType
string tiene un valor de cualquiera merge
o replace
, que realiza el equivalente de los comandos load merge
del modo de configuración o load replace
en un dispositivo que ejecuta Junos OS.
Comandos del modo de configuración de Junos OS: los siguientes métodos cargan datos de configuración como un conjunto de comandos del modo de configuración de Junos OS. Estos métodos solo se admiten en dispositivos que ejecutan Junos OS versión 11.4 o una versión posterior. Junos OS ejecuta las instrucciones de configuración línea por línea. Para cada elemento, puede especificar la ruta de instrucción completa en el comando o puede usar comandos de navegación, como
edit
, para moverse por la jerarquía de configuración como lo hace en el modo de configuración de CLI.loadSetConfiguration(String setCommands)
— Especifique los datos de configuración en el código de programa, ya sea como un argumento de método o como una variable pasada al método.loadSetFile(String filePath)
— Carga los datos de configuración del archivo especificado por filePath.
Texto ASCII formateado: los métodos siguientes cargan datos de configuración como texto ASCII formateado. Utilice las notaciones de CLI estándar de Junos OS (el carácter de nueva línea, pestañas, espacios, corchetes y corchetes) para indicar las relaciones jerárquicas entre instrucciones de configuración.
loadTextConfiguration(String textConfiguration, String loadType)
— Especifique los datos de configuración en el código de programa, ya sea como un argumento de método o como una variable pasada al método.loadTextFile(String filePath, String loadType)
— Carga los datos de configuración del archivo especificado por filePath.
Elementos de etiqueta Junos XML: los métodos siguientes cargan datos de configuración como elementos de etiqueta Junos XML. Incluya los elementos de etiqueta que representan todos los niveles de la jerarquía de configuración bajo la raíz, el
<configuration>
elemento tag, hasta cada elemento nuevo o cambiado.loadXMLConfiguration(String XMLConfiguration, String loadType)
— Especifique los datos de configuración en el código de programa como unnet.juniper.netconf.XML
objeto, que se pasa al método.loadXMLFile(String filePath, String loadType)
— Carga los datos de configuración del archivo especificado por filePath.
El siguiente fragmento de código combina la ftp
instrucción en la configuración candidata en el [edit system services]
nivel de jerarquía. Se muestra la instrucción Java para cada tipo de método de configuración de carga. Cuando se carga desde un archivo, el archivo debe contener la jerarquía adecuada en el formato deseado.
/* r1-config-set.txt: set system services ftp r1-config-text.txt: system { services { ftp; } } r1-config-xml.txt: <system> <services> <ftp/> </services> </system> */ String config_file_set = "configs/r1-config-set.txt" String config_file_text = "configs/r1-config-text.txt" String config_file_xml = "configs/r1-config-xml.txt" XMLBuilder builder = new XMLBuilder(); XML ftp_config = builder.createNewConfig("system", "services", "ftp"); Device device = new Device("10.10.1.1","admin","PaSsWoRd",null); device.connect(); //open a private copy of the candidate configuration device.openConfiguration("private"); // load configuration data as Junos OS configuration mode commands device.loadSetConfiguration("set system services ftp"); device.loadSetFile(config_file_set); // load configuration data as formatted ASCII text device.loadTextConfiguration("system { services { ftp; } }", "merge"); device.loadTextFile(config_file_text, "merge"); // load configuration data as Junos XML tag elements device.loadXMLConfiguration(ftp_config.toString(), "merge"); device.loadXMLFile(config_file_xml, "merge"); device.commit(); device.close();
Ejemplo: Aplicación JAVA NETCONF para cargar y confirmar una configuración
En el siguiente ejemplo, el programa de kit de herramientas NETCONF Java crea una jerarquía de configuración, que luego se fusiona con la configuración candidata en el dispositivo especificado. A continuación, se confirma la configuración resultante. La jerarquía de configuración de ejemplo es para un dispositivo que ejecuta Junos OS.
Requisitos
Enrutamiento, conmutación o dispositivo de seguridad que ejecuta Junos OS.
El kit de herramientas Java de NETCONF se instala en el servidor de administración de configuración.
La aplicación cliente puede iniciar sesión en el dispositivo donde reside el servidor NETCONF.
El servicio NETCONF a través de SSH está habilitado en el dispositivo donde reside el servidor NETCONF.
Visión general
En el siguiente ejemplo, se realiza una load merge
operación para actualizar la configuración de candidato en un dispositivo que ejecuta Junos OS y, a continuación, se confirma la nueva configuración. La jerarquía XML que se agregará a la configuración se construye con el XMLBuilder
objeto y se almacena en la ftp_config
variable. Alternativamente, puede cargar datos de configuración como texto y, para dispositivos que ejecutan Junos OS versión 11.4 o una versión posterior, como un conjunto de comandos del modo de configuración de Junos OS.
La nueva jerarquía de configuración, que habilita el servicio FTP en el dispositivo, es:
<configuration> <system> <services> <ftp/> </services> </system> </configuration>
El código de programa crea un nuevo Device
objeto y llama al connect()
método. Esto establece una conexión SSHv2 y una sesión NETCONF predeterminada con el dispositivo en el que se ejecuta el servidor NETCONF.
Para evitar conflictos con otros usuarios que podrían editar simultáneamente la configuración del candidato, el código llama al lockConfig()
método en el objeto de dispositivo para bloquear la configuración. Si se produce un error en el bloqueo, el método genera un mensaje de error y el programa se sale. Si el bloqueo es correcto, el loadXMLConfiguration(ftp_config.toString(), "merge")
método carga la nueva jerarquía de configuración en la configuración candidata mediante la merge
opción. Observe que, aunque la jerarquía de configuración se construye inicialmente como XML, debe convertirla en una cadena antes de pasarla como un argumento al loadXMLConfiguration()
método.
Una vez que la nueva jerarquía de configuración se fusiona con la configuración de candidato, el programa intenta confirmar la configuración. Si la operación de confirmación no es exitosa, el programa imprime el mensaje de error asociado. Luego, el programa desbloquea la configuración y cierra la conexión del dispositivo y la sesión de NETCONF.
Para obtener más información acerca de las merge
replace
y opciones para cargar jerarquías e instrucciones de configuración en la configuración del candidato, consulte la Guía del usuario de CLI.
Configuración
Creación del programa Java
Procedimiento paso a paso
Para construir el archivo de programa Java que contiene el código para los cambios y solicitudes de configuración:
Asigne al archivo un nombre descriptivo.
El nombre de archivo debe ser el mismo que el nombre de la clase. Para este ejemplo, el archivo y la clase se denominan EditConfig.
Agregue el código al archivo y actualice las variables específicas del entorno, como la dirección IP del host remoto, el nombre de usuario y la contraseña.
El código Java completo para el programa EditConfig se presenta aquí.
import java.io.IOException; import javax.xml.parsers.ParserConfigurationException; import net.juniper.netconf.CommitException; import net.juniper.netconf.Device; import net.juniper.netconf.LoadException; import net.juniper.netconf.NetconfException; import net.juniper.netconf.XML; import net.juniper.netconf.XMLBuilder; import org.xml.sax.SAXException; public class EditConfig { public static void main(String[] args) throws LoadException, IOException, NetconfException, ParserConfigurationException, SAXException { /*Build the following XML hierarchy to add to the configuration: * <configuration> * <system> * <services> * <ftp/> * </services> * </system> * </configuration> */ XMLBuilder builder = new XMLBuilder(); XML ftp_config = builder.createNewConfig("system", "services", "ftp"); //Create the device Device device = new Device("10.10.1.1","admin","PaSsWoRd",null); device.connect(); //Lock the configuration boolean isLocked = device.lockConfig(); if(!isLocked) { System.out.println("Could not lock configuration. Exit now."); return; } //Load and commit the configuration try { device.loadXMLConfiguration(ftp_config.toString(), "merge"); device.commit(); } catch(LoadException e) { System.out.println(e.getMessage()); return; } catch(CommitException e) { System.out.println(e.getMessage()); return; } //Unlock the configuration and close the device device.unlockConfig(); device.close(); } }
Compilación y ejecución del programa Java
Procedimiento paso a paso
Necesita un compilador Java para compilar el código fuente y crear un programa ejecutable.
Para compilar el código y ejecutar el programa en el servidor de administración de configuración:
Compile el archivo EditConfig.java .
> javac EditConfig.java
Ejecute el programa EditConfig .
> java EditConfig
Verificación
Verificar la ejecución del programa
Propósito
Verifique que el programa EditConfig se ejecute correctamente.
Acción
Si el programa se ejecuta correctamente, establece una conexión y crea una sesión NETCONF con el dispositivo especificado. El programa combina la nueva jerarquía con la configuración del candidato en el dispositivo y confirma la configuración.
Puede comprobar que la configuración se fusionó y se con comprometió correctamente viendo la configuración resultante en el dispositivo remoto. La ftp
instrucción ahora debería estar en la configuración activa. En un dispositivo que ejecuta Junos OS, escriba el siguiente comando de modo operativo para ver la [edit system services]
jerarquía:
user@host> show configuration system services ftp; netconf { ssh; }
Solución de problemas
Mensajes de error para la solución de problemas
Problema
El siguiente mensaje de error se imprime en la pantalla:
Could not lock configuration. Exit now.
Solución
Otro usuario tiene actualmente un bloqueo en la configuración del candidato. Espere hasta que se libere el bloqueo y ejecute el programa.
Ejemplo: Aplicación Java NETCONF para cargar comandos de configuración de conjunto
Este programa de kit de herramientas JAVA NETCONF muestra el loadSetConfiguration()
método que actualiza la configuración mediante un conjunto de comandos del modo de configuración de Junos OS.
Requisitos
Dispositivo de enrutamiento, conmutación o seguridad que ejecuta la versión 11.4 o posterior de Junos OS.
El kit de herramientas Java de NETCONF se instala en el servidor de administración de configuración.
La aplicación cliente puede iniciar sesión en el dispositivo donde reside el servidor NETCONF.
El servicio NETCONF a través de SSH está habilitado en el dispositivo donde reside el servidor NETCONF.
Visión general
La Device
clase contiene los loadSetConfiguration()
métodos y loadSetFile()
, que cargan datos de configuración como un conjunto de comandos del modo de configuración de Junos OS en dispositivos que ejecutan Junos OS versión 11.4 o una versión posterior. Para cada elemento de configuración, puede especificar la ruta de instrucción completa en el comando o puede usar comandos de navegación, como edit
, para moverse por la jerarquía de configuración como lo hace en el modo de configuración de CLI. El kit de herramientas JAVA NETCONF convierte el comando establecido en el EQUIVALENTE EN XML que puede procesar el servidor NETCONF en dispositivos que ejecutan Junos OS. Junos OS ejecuta las instrucciones de configuración línea por línea.
La sintaxis del método es:
public void loadSetConfiguration (String setCommands) public void loadSetFile (String filePath)
El loadSetConfiguration()
método toma como argumento la cadena de comandos de configuración que ingresaría en el modo de configuración de CLI de Junos OS. Por ejemplo, para agregar la ftp
instrucción en el [edit system services]
nivel de jerarquía, utilice el set system services ftp
comando. El loadSetFile()
método toma como argumento la ruta del archivo que contiene el conjunto de comandos de configuración.
También puede usar ambos métodos para cargar varios comandos. Para cargar varios comandos mediante el loadSetConfiguration()
método, puede enumerar los comandos como una sola cadena y separarlos con la secuencia de nueva \n
línea, o puede ejecutar el método por separado para cada comando. Para cargar varios comandos mediante el loadSetFile()
método, coloque cada comando en una línea independiente en el archivo.
Cuando utilice el loadSetConfiguration()
método con comandos de navegación, debe enumerar los comandos como una sola cadena y separarlos con la secuencia de nueva \n
línea. No puede llamar al loadSetConfiguration()
método con un único comando de navegación como up
.
El programa de este ejemplo carga dos comandos de configuración, que combinan dos instrucciones en la configuración candidata en un dispositivo que ejecuta Junos OS versión 11.4. El primer comando, set system services ftp, agrega la ftp
instrucción en el [edit system services]
nivel de jerarquía. El segundo comando, set interfaces ge-0/0/0 disable, agrega la disable
instrucción en el [edit interfaces ge-0/0/0]
nivel de jerarquía. Las instrucciones relevantes del código de programa son:
String system_config = "set system services ftp"; String interfaces_config = "set interfaces ge-0/0/0 disable"; device.loadSetConfiguration(system_config); device.loadSetConfiguration(interfaces_config);
Configuración
Creación del programa Java
Procedimiento paso a paso
Para construir el archivo de programa Java:
Asigne al archivo un nombre descriptivo.
El nombre de archivo debe ser el mismo que el nombre de la clase. Para este ejemplo, el archivo y la clase se denominan LoadSetConfig.
Agregue el código al archivo y actualice las variables específicas del entorno, como la dirección IP del host remoto, el nombre de usuario, la contraseña y
<rpc-reply>
los elementos de etiqueta.Aquí se presenta el código Java completo para el programa LoadSetConfig.java .
Si carga el conjunto de comandos desde un archivo, cree un archivo que contenga los comandos y reemplace las dos
loadSetConfiguration()
llamadas al método por una llamada alloadSetFile()
método./*LoadSetConfig*/ import java.io.IOException; import javax.xml.parsers.ParserConfigurationException; import net.juniper.netconf.Device; import net.juniper.netconf.CommitException; import net.juniper.netconf.LoadException; import net.juniper.netconf.NetconfException; import net.juniper.netconf.XML; import org.xml.sax.SAXException; public class LoadSetConfig { public static void main(String args[]) throws NetconfException, ParserConfigurationException, SAXException, IOException { String system_config = "set system services ftp"; String interfaces_config = "set interfaces ge-0/0/0 disable"; Device device = new Device("10.10.1.1","admin","PaSsWoRd",null); try { device.connect(); System.out.println("Connection successful."); if (device.lockConfig()) { System.out.println("Configuration successfully locked."); try { System.out.println("Updating configuration."); device.loadSetConfiguration(system_config); device.loadSetConfiguration(interfaces_config); System.out.println("Committing configuration."); device.commit(); } catch (LoadException e) { System.out.println("LoadException occurred: " + e.getMessage()); } catch (CommitException e) { System.out.println("CommitException occurred: " + e.getMessage()); } device.unlockConfig(); device.close(); } else { System.out.println("Error - cannot lock configuration"); } } catch (NetconfException e) { System.out.println("Could not connect to device: " + e.getMessage()); } } }
Compilación y ejecución del programa Java
Procedimiento paso a paso
Necesita un compilador Java para compilar el código fuente y crear un programa ejecutable.
Para compilar el código y ejecutar el programa en el servidor de administración de configuración:
Compile el archivo LoadSetConfig.java .
> javac LoadSetConfig.java
Ejecute el programa LoadSetConfig .
> java LoadSetConfig
Verificación
Para confirmar que el programa funciona correctamente:
- Verificar la ejecución del programa
- Verificar los cambios de configuración
- Verificar la confirmación
Verificar la ejecución del programa
Propósito
Compruebe que el programa LoadSetConfig se ejecute correctamente.
Acción
Si el programa se ejecuta correctamente, establece una conexión y crea una sesión NETCONF con el dispositivo especificado. El programa combina las nuevas instrucciones con la configuración de candidato en el dispositivo y confirma la configuración.
>java LoadSetConfig Connection successful. Configuration successfully locked. Updating configuration. Committing configuration.
Verificar los cambios de configuración
Propósito
Puede comprobar que la configuración se fusionó y se con comprometió correctamente viendo la configuración resultante en el dispositivo remoto. Las ftp
instrucciones y ahora disable
deben estar en la configuración activa. En un dispositivo que ejecute Junos OS, emita los siguientes comandos de modo operativo para ver los [edit system services]
niveles y [edit interfaces]
de jerarquía:
Acción
admin@host> show configuration system services ftp; netconf { ssh; }
admin@host> show configuration interfaces ge-0/0/0 { disable; }
Verificar la confirmación
Propósito
Además, puede revisar el registro de confirmación para comprobar que la confirmación fue correcta. En un dispositivo que ejecute Junos OS, emita el comando de show system commit
modo operativo para ver el registro de confirmación. En este ejemplo, el registro confirma que el usuario admin
confirmó la configuración candidata en una sesión NETCONF en la fecha y hora dadas.
Acción
Emita el comando del show system commit
modo operativo y revise el registro de confirmación.
admin@host> show system commit 0 2011-09-02 14:16:44 PDT by admin via netconf 1 2011-07-08 14:33:46 PDT by root via other