Cisco IOS Scripting with Tcl Descargue este capítulo Cisco IOS Scripting with Tcl Descargue el libro completo Guía de configuración de la administración del Cisco IOS Network, versión 12.2SR (PDF - 8 MB) Feedback Contenidos Cisco IOS Scripting with Tcl Contenido Prerrequisitos de Cisco IOS Scripting with Tcl Restricciones de Cisco IOS Scripting with Tcl Información sobre Cisco IOS Scripting with Tcl Shell Tcl para Cisco IOS Software Precompilador Tcl Acceso al Objeto SNMP MIB Extensiones de encargo en el shell Tcl Extensiones de encargo del SNMP MIB en el shell Tcl Cómo Configurar la Creación de Scripts de Cisco IOS con Tcl Habilitando el shell y usar Tcl el CLI a los comandos Enter Ejemplos Consejos de Troubleshooting Usando el shell Tcl para acceder los objetos del SNMP MIB Prerrequisitos Consejos de Troubleshooting Scripts TCL predefinido que se ejecuta Prerrequisitos Ejemplos de Configuración de Cisco IOS Scripting with Tcl Ejemplo: Script Tcl usando el comando show interfaces Ejemplo: Script Tcl para el soporte S TP Ejemplo: Script Tcl para el acceso del SNMP MIB Referencias adicionales Documentos Relacionados Estándares MIB RFC Asistencia Técnica Información sobre la Función Cisco IOS Scripting with Tcl Glosario Cisco IOS Scripting with Tcl Primera publicación: De julio el 28 de 2003 Última actualización: De septiembre el 10 de 2010 La función Cisco IOS Scripting with Tcl proporciona la capacidad de ejecutar los comandos de Tool Command Language (Tcl) versión 8.3.4 desde la interfaz de línea de comandos (CLI) de Cisco IOS. Su versión de software puede no soportar todas las características documentadas en este módulo. Para la últimas información y advertencias de la característica, vea los Release Note para su plataforma y versión de software. Para encontrar la información sobre las características documentadas en este módulo, y ver una lista de las versiones en las cuales se soporta cada característica, vea “información de la característica para el scripting del Cisco IOS con la sección Tcl”. Utilice Cisco Feature Navigator para buscar información sobre el soporte de plataformas y el soporte de imágenes del software Cisco IOS y Catalyst OS. Para acceder a Cisco Feature Navigator, vaya a http://www.cisco.com/go/cfn. Una cuenta en Cisco.com no se requiere. Contenido • Prerrequisitos de Cisco IOS Scripting with Tcl • Restricciones de Cisco IOS Scripting with Tcl • Información sobre Cisco IOS Scripting with Tcl • Cómo Configurar la Creación de Scripts de Cisco IOS con Tcl • Ejemplos de Configuración de Cisco IOS Scripting with Tcl • Referencias adicionales • Información sobre la Función Cisco IOS Scripting with Tcl • Glosario Prerrequisitos de Cisco IOS Scripting with Tcl • La familiaridad con la programación y los comandos cisco ios Tcl se requiere. • Los comandos Tcl se pueden ejecutar del modo de configuración Tcl que usa el Cisco IOS CLI. Acceden al modo de configuración Tcl del modo EXEC privilegiado. El acceso al modo EXEC privilegiado se debe manejar por el acceso de restricción usando enable el comando password. Restricciones de Cisco IOS Scripting with Tcl • Si se usan comandos de configuración de Cisco IOS en scripts Tcl, hay que ingresar los comandos de submodo como argumentos entre comillas en la misma línea que el comando de configuración. • Se proporcionan los mensajes de error, pero usted debe marcar que el script Tcl se ejecutará con éxito porque los errores pueden hacer el shell Tcl ejecutarse en un Loop infinito. Advierta el uso de los socketes del servidor Tcl de escuchar el telnet y los puertos FTP (23 y 21 respectivamente) se apropiará de dirección normal de estos puertos en Cisco IOS Software. • El cuadro 1 enumera los comandos Tcl y las llamadas de la biblioteca que no se comportan dentro del Cisco IOS Software como se documenta en los documentos estándar Tcl. Palabra Comando clave Argumento Soportados Comentarios after ms script Parcialmente Cuando se utiliza el comando tclsh de la CLI, no hay ningún loop de evento implementado a menos que Embedded Syslog Manager (ESM) esté activo en el mismo router. Los comandos entered que usanafter el comando Tcl no se ejecutarán a menos que estén forzados usando update el comando. El modo de sueño (afterel comando) trabaja solamente conms la palabra clave. file -time atime No La palabra clave optativa-time para fijar el tiempo del acceso al archivo no se soporta en Cisco IOS Software. file -time mtime No La palabra clave optativa-time para fijar el tiempo de la modificación de archivos no se soporta en Cisco IOS Software. fileevent history Parcialmente Cuando se utiliza el comando tclsh de la CLI, no hay ningún loop de evento implementado a menos que Embedded Syslog Manager (ESM) esté activo en el mismo router. Los comandos entered que usanfileevent el comando Tcl no se ejecutarán a menos que estén forzados usando update el comando. !n load Parcialmente !nEl acceso directo no trabaja en Cisco IOS Software. Utilicehistory el comando Tcl conredo n la palabra clave. No Cuando utilizan al comando load CLI, el exponer del mensaje de error “dinámico cargando no disponible en este sistema” se visualiza. Información sobre Cisco IOS Scripting with Tcl Para crear y utilizar el Scripts TCL dentro del Cisco IOS Software, usted debe entender los conceptos siguientes: • Shell Tcl para Cisco IOS Software • Precompilador Tcl • Acceso al Objeto SNMP MIB Shell Tcl para Cisco IOS Software El shell Tcl del Cisco IOS fue diseñado para permitir que los clientes funcionen con los comandos Tcl directamente del prompt del Cisco IOS CLI. El Cisco IOS Software contiene algunos subsistemas tales como administrador integrado del Syslog (ESM) y respuesta de voz interactiva (IVR) los intérpretes ese Tcl del uso como parte de su implementación. Estos subsistemas tienen sus propios comandos y opción de palabra clave propietarios que no estén disponibles en el shell Tcl. Varios métodos se han desarrollado para el Scripts TCL que creaba y que se ejecutaba dentro del Cisco IOS Software. Un shell Tcl puede ser habilitado, y los comandos Tcl pueden ser línea por línea ingresado. Después de que se ingresen los comandos Tcl, se envían a un intérprete Tcl. Si los comandos se reconocen como comandos válidos Tcl, se ejecutan los comandos y los resultados se envían al dispositivo TTY. Si un comando no es un comando reconocido Tcl, se envía al analizador de sintaxis del Cisco IOS CLI. Si el comando no es un Tcl o comando cisco ios, se visualizan dos mensajes de error. Un script predefinido Tcl se puede crear fuera del Cisco IOS Software, transferido para contellear o de la memoria de disco, y se ejecuta dentro del Cisco IOS Software. Es también posible crear un script Tcl y precompilar el código antes de ejecutarlo bajo Cisco IOS Software. Los usuarios múltiples en el mismo router pueden estar en el modo de configuración Tcl al mismo tiempo sin interferencia porque cada sesión del shell Tcl pone en marcha un intérprete separado y el proceso del servidor Tcl. El Número de interfaz TTY servido por cada proceso Tcl se representa en el nombre del proceso del servidor y se puede visualizar usando show process el comando CLI. El shell Tcl se puede utilizar para funcionar con los comandos exec del Cisco IOS CLI dentro de un script Tcl. Usando el shell Tcl funcionar con los comandos CLI permite que los clientes construyan los menús para dirigir a los usuarios del novato con las tareas, de automatizar las tareas repetidores, y de crear la salida de encargo para show los comandos. Precompilador Tcl El soporte de las ofertas de la implementación Tcl del Cisco IOS para los scripts que cargan que han sido precompilados por el precompilador de TclPro. Los scripts precompilados permiten una medida de Seguridad y de estado coherente porque se ofuscan. Acceso al Objeto SNMP MIB Diseñó hacer el acceso a los objetos de MIB del Simple Network Management Protocol (SNMP) más fácil, un conjunto Unixcomo de los comandos SNMP se ha creado. El shell Tcl se habilita manualmente o usando un script Tcl, y los comandos new pueden ser ingresados para permitir que usted se realice especificado consiguen y fijan las acciones en los objetos de MIB. Para aumentar la utilidad, los comandos new tienen nombres similares a ésos usados para el acceso de UNIX SNMP. Para acceder los comandos SNMP vaya a, “usando el shell Tcl a acceder sección de los objetos del SNMP MIB”. Extensiones de encargo en el shell Tcl La implementación del Cisco IOS del shell Tcl contiene algunas Extensiones del comando custom. Estas extensiones sólo funcionan en modo de configuración de Tcl. El cuadro 2 visualiza estas Extensiones del comando. Comando Descripción fconfigure -remote []host portbroadcastboolean vrf [] vrf_table_name Especifica las opciones en un canal y le permite para asociar un ruteo virtual y un nombre de la tabla de la expedición (VRF) a él. ios_config Funciona con un comando configuration del Cisco IOS CLI. log_user Salida de comando Tcl de las palancas bajo modo de configuración Tcl. socket -myvrf []vrf_table_name Abre una conexión de red TCP y le permite para asociar un nombre de la tabla VRF a él. typeahead Escribe el texto al archivo estándar del buffer de la entrada del router (stdin). tclquit Shell Tcl de las hojas — sinónimo para exit. udp_open -ipv6 port Abre un socket del User Datagram Protocol (UDP). udp_peek sock -buffersize buffersize Permisos que miran a escondidas en un socket UDP. Extensiones de encargo del SNMP MIB en el shell Tcl La implementación del Cisco IOS del shell Tcl contiene algunas Extensiones del comando custom para el acceso a objetos del SNMP MIB. Estas extensiones sólo funcionan en modo de configuración de Tcl. El cuadro 3 visualiza estas Extensiones del comando. Comando Descripción snmp_getbulk Extrae un gran parte de una tabla MIB. Este comando es similar al comando SNMP getbulk . La sintaxis tiene el formato siguiente: snmp_getbulk community-string non-repeaters max-repetitions oid [...]oid2 oid3 • Utilice community-string el argumento para especificar la comunidad SNMP de quien los objetos serán extraídos. • Utilice non-repeaters el argumento para especificar el número de objetos que se puedan extraer con una operación del Get Next. • Utilice max-repetitions el argumento para especificar el número máximo de operaciones del Get Next para intentar mientras que intenta extraer los objetos restantes. • snmp_getid Utilice oid el argumento para especificar el ID del objeto para extraer. Extrae las variables siguientes de la entidad SNMP en el router: • sysDescr.0 • sysObjectID.0 • sysUpTime.0 • sysContact.0 • sysName.0 • sysLocation.0 Este comando es similar al comando SNMP getid . La sintaxis tiene el formato siguiente: snmp_getid community-string snmp_getnext Extrae un conjunto de variables individuales de la entidad SNMP en el router. Este comando es similar al comando SNMP getnext . La sintaxis tiene el formato siguiente: snmp_getnext community-string oid [...]oid2 oid3 snmp_getone Extrae un conjunto de variables individuales de la entidad SNMP en el router. Este comando es similar al comando SNMP getone . La sintaxis tiene el formato siguiente: snmp_getone community-string oid [...]oid2 oid3 snmp_setany Extrae los valores actuales de las variables especificadas y después realiza una petición del conjunto en las variables. Este comando es similar al comando SNMP setany . La sintaxis tiene el formato siguiente: snmp_setany community-string oid type val [...]oid2 type2 val2 • Utilice type el argumento para especificar el tipo de objeto para extraer. type Puede ser uno del siguiente: -i– — Número entero. Un número de 32 bits que se utiliza para especificar un tipo numerado en el contexto de un objeto administrado. Por ejemplo, para definir el estado operativo de una interfaz del router, 1 representa activo y 2 representa inactivo. -u– — Unsigned32. Un número de 32 bits usado para representar los valores decimales en el rango a partir de la 0 a 232 - 1 inclusivos. -c– — Counter32. Un número de 32 bits con un valor mínimo de 0 y un valor máximo de 232 - 1. Cuando se alcanza el valor máximo, los contadores se reinicia a 0 y comienzo otra vez. -g– — Indicador. Un número de 32 bits con un valor mínimo de 0 y un valor máximo de 232 - 1. El número puede aumentar o disminuir a voluntad. Por ejemplo, la velocidad de la interfaz en un router se mide usando un tipo de objeto del indicador. -o– — Cadena de octetos. Una cadena de octetos — en la notación hexadecimal — usada para representar a las direcciones físicas. -d– — Cadena de visualización. Una cadena de octetos — en la notación del texto — usada para representar las cadenas de texto. -ipv4– — Versión IP direccionamiento 4. -oid– — Identificación de objeto • Utilice val el argumento para especificar el valor del ID del objeto para extraer. Cómo Configurar la Creación de Scripts de Cisco IOS con Tcl Esta sección contiene las siguientes tareas: • Habilitando el shell Tcl y con el CLI a los comandos Enter (requeridos) • Usando el shell Tcl para acceder los objetos del SNMP MIB (opcionales) • Scripts TCL predefinido que se ejecuta (opcional) Habilitando el shell y usar Tcl el CLI a los comandos Enter Realice esta tarea de habilitar el shell interactivo Tcl y de ingresar los comandos Tcl línea por línea con el prompt del Cisco IOS CLI. Los pasos opcionales incluyen especificar una ubicación predeterminada para los archivos de codificación y especificar un script de la inicialización. PASOS SUMARIOS 1. enable 2. configure terminal 3. scripting tcl encdir location-url 4. scripting tcl init init-url 5. scripting tcl low-memory bytes 6. exit 7. tclsh 8. Ingrese el sintaxis requerido del lenguaje del comando Tcl. 9." ios_config "cmd“cmd-option” 10. socket -myaddr addr- myport port -myvrf vrf-table-name host port 11 socket --server myaddr addr -myvrf vrf-table-name port 12. fconfigure channelname -remote []host port-broadcastboolean vrf []vrf_table_name 13. udp_open -ipv6 port 14. udp_peek calcetín buffersize 15. exec "exec-cmd“ 16. exit PASOS DETALLADOS Paso 1 Comando o acción Propósito enable Habilita el modo EXEC privilegiado. Example: Router> enable Paso 2 configure terminal Example: Router# configure terminal Paso 3 scripting tcl encdir location-url Example: Router(config)# scripting tcl encdir tftp://10.18.117.23/enctcl/ Paso 4 scripting tcl init init-url Paso 5 scripting tcl low-memory bytes • Ingrese su contraseña si se le pide que lo haga. (Opcional) Ingresa en el modo de configuración global. • Realice el paso 2 al paso 6 si usted está utilizando los archivos de la codificación, un script de la inicialización, o ambos. (Opcional) especifica la ubicación predeterminada de los archivos externos de la codificación usados por el comando encoding Tcl. (Opcional) Especifica que se ejecute un Example: script de inicialización Router(config)# scripting tcl init ftp://user:password@172.17.40.3/tclscript/initf cuando se habilite el shell Tcl. iles3.tcl Example: Router(config)# scripting tcl low-memory 33117513 (Opcional) especifica una memoria de la marca de la memoria del punto más bajo gratis para las aplicaciones basado en Tcl. El umbral de la memoria se puede fijar dondequiera entre 04294967295 bytes. Observesi RAM libre del mínimo cae debajo de este umbral, el TCL aborta el script actual. Esto evita que el intérprete Tcl afectar un aparato demasiado RAM y cause un crash al router. Paso 6 exit Example: Router(config)# exit Paso 7 tclsh Example: Router# tclsh Paso 8 Ingresar la sintaxis requerida del lenguaje de comandos Tcl. Example: Router(tcl)# proc get_bri {} Paso 9 ios_config "cmd" "cmd-option" Example: Router(tcl)# ios_config "interface Ethernet 2/0" "no keepalive" (Opcional) Sale del modo de configuración global y vuelve al modo EXEC privilegiado. Habilita el shell interactivo de Tcl e ingresa al modo de configuración de Tcl. Los comandos ingresados en el modo de configuración Tcl se envían primero al intérprete interactivo Tcl. Si el comando no es un comando Tcl válido, entonces se envía al parser de la CLI. (Opcional) modifica la configuración del router usando un script Tcl especificando el comando Tcl ios_config con los comandos CLI y las opciones. Todos los argumentos y comandos del submode se deben ingresar en la misma línea que el comando de configuración CLI. • En este ejemplo, el primer argumento en las citas configura una interfaz de Ethernet y ingresa al modo de configuración de la interfaz. El segundo argumento en las citas fija la opción de keepalive. Si estas dos declaraciones CLI fueran ingresadas en las líneas de comando separadas Tcl, la configuración no trabajaría. Paso 10 socket -myaddr addr -myport port -myvrf vrftable-name host port Example: Router(tcl)# socket -myaddr 10.4.9.34 -myport 12345 -myvrf testvrf 12346 Especifica el socket del cliente y permite que un intérprete TCL conecte vía el TCP sobre IPv4/IPv6 y abre una conexión de red TCP. Usted puede especificar un puerto y un host para conectar con; debe haber un servidor para validar las conexiones en este puerto. • -myaddr addr — Domain Name o dirección IP numérica de la interfaz de la red del client cara requerida para la conexión. Utilice esta opción especialmente si la máquina del cliente tiene interfaces de Red múltiple. • -myport port — número del puerto que se requiere para la conexión del cliente. • -myvrf [] vrf_table_name— especifica el nombre de la tabla del vrf. Si la tabla del vrf no se configura, después el comando volverá un TCL_ERROR. Paso 11 socket -server -myaddr addr -myvrf vrf-table- Especifica el socket del servidor y permite que un intérprete TCL Example: Router(tcl)# socket -server test -myvrf testvrf conecte vía el TCP sobre IPv4/IPv6 y abre 12348 una conexión de red TCP. Si el puerto es cero, el Cisco IOS afectará un aparato un puerto libre al socket del servidor usando fconfigure el comando de leer sock0 el argumento. name port • -myaddr addr — Domain Name o dirección IP numérica de la interfaz de la red del client cara requerida para la conexión. Utilice esta opción especialmente si la máquina del cliente tiene interfaces de Red múltiple. • -myvrf vrf — especifica el nombre de la tabla del vrf. Si la tabla del vrf no se configura, después el comando volverá un TCL_ERROR y añadir al final del fichero “no puede obtener la tabla ID VRF para VRF_table_name” al resultado del intérprete. Paso 12 fconfigure channelname -remote [host port] broadcast boolean -vrf [vrf_table_name] Example: Router(tcl)# fconfigure sock1 -vrf vrf1 -remote [list 10.4.9.37 56009] -broadcast 1 Especifica las opciones en un canal. • En caso de los socketes UDP que se crean usando udp_open, el socket UDP se puede asociar a un VRF usando fconfigure el comando. • Este comando se puede también utilizar para visualizar las propiedades del canal. • -broadcast — los permisos o inhabilitan la difusión. Paso 13 udp_open -ipv6 port Example: Router(tcl)# udp_open -ipv6 56005 Paso 14 udp_peek sock -buffersize buffer-size Example: Router(tcl)# udp_peek sock0 -buffersize 100 Paso 15 exec "exec-cmd" Abre un socket UDP. • Si se especifica un puerto el socket UDP será abierto en ese puerto. Si no el sistema elegirá un puerto y usted puede utilizar fconfigure el comando de obtener el número del puerto, si procede. Si -ipv6 el argumento se especifica, el socket será abierto especificando la familia de protocolos AF_INET6. Permisos que miran a escondidas en un socket UDP. • -buffersize buffer-size — especifica el buffersize. (Opcional) ejecuta los comandos del modo Example: Router(tcl)# exec "show interfaces" EXEC del Cisco IOS CLI de un script Tcl especificando el comando exec Tcl con los comandos CLI. • En este ejemplo, la información de la interfaz para el router se visualiza. Paso 16 exit Example: Router(tcl)# exit Sale del modo de configuración de Tcl y vuelve al modo EXEC privilegiado. Ejemplos La información hecha salir (parcial) siguiente de las demostraciones de la muestra sobre la interfaz de Ethernet 0 en el router. show interfaces El comando se ha ejecutado del modo de configuración Tcl. Router# tclsh Router(tcl)# exec "show interfaces" Ethernet 0 is up, line protocol is up Hardware is MCI Ethernet, address is 0000.0c00.750c (bia 0000.0c00.750c) Internet address is 10.108.28.8, subnet mask is 255.255.255.0 MTU 1500 bytes, BW 10000 Kbit, DLY 100000 usec, rely 255/255, load 1/255 Encapsulation ARPA, loopback not set, keepalive set (10 sec) ARP type: ARPA, ARP Timeout 4:00:00 Last input 0:00:00, output 0:00:00, output hang never Last clearing of "show interface" counters 0:00:00 Output queue 0/40, 0 drops; input queue 0/75, 0 drops Five minute input rate 0 bits/sec, 0 packets/sec Five minute output rate 2000 bits/sec, 4 packets/sec 1127576 packets input, 447251251 bytes, 0 no buffer Received 354125 broadcasts, 0 runts, 0 giants, 57186* throttles 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 5332142 packets output, 496316039 bytes, 0 underruns 0 output errors, 432 collisions, 0 interface resets, 0 restarts . . . Consejos de Troubleshooting Utilice el comando puts Tcl en un script Tcl a la ejecución del comando trace. Usando el shell Tcl para acceder los objetos del SNMP MIB Realice esta tarea de habilitar el shell interactivo Tcl y de ingresar los comandos Tcl de realizar las acciones en los objetos de MIB. Prerrequisitos La configuración de la comunidad SNMP debe existir en la configuración corriente del router. PASOS SUMARIOS 1. enable 2. configure terminal 3. scripting tcl encdir location-url 4. scripting tcl init init-url 5. exit 6. tclsh 7. Ingrese cualquier sintaxis requerido del lenguaje del comando Tcl. 8. snmp_getbulk community-string non-repeatersmax-repetitions oid []oid2 oid3... 9. snmp_getid community-string 10. snmp_getnext community-string oid []oid2 oid3... 11 snmp_getone community-string oid []oid2 oid3... 12. snmp_setany community-string oid type val []oid2 type2 val2... 13. exit PASOS DETALLADOS Paso 1 Comando o acción Propósito enable Habilita el modo EXEC privilegiado. Example: Router> enable Paso 2 configure terminal Example: Router# configure terminal Paso 3 scripting tcl encdir location-url Example: Router(config)# scripting tcl encdir tftp://10.18.117.23/enctcl/ Paso 4 scripting tcl init init-url Example: Router(config)# scripting tcl init ftp://user:password@172.17.40.3/tclscript/initf iles3.tcl Paso 5 exit Example: Router(config)# exit Paso 6 tclsh Example: Router# tclsh • Ingrese su contraseña si se le pide que lo haga. (Opcional) Ingresa en el modo de configuración global. • Realice el paso 2 al paso 5 realizan el paso 2 al paso 5 si usted está utilizando los archivos de la codificación, un script de la inicialización, o ambos. (Opcional) especifica la ubicación predeterminada de los archivos externos de la codificación usados por el comando encoding Tcl. (Opcional) Especifica que se ejecute un script de inicialización cuando se habilite el shell Tcl. (Opcional) Sale del modo de configuración global y vuelve al modo EXEC privilegiado. Habilita el shell interactivo de Tcl e ingresa al modo de configuración de Tcl. Paso 7 Ingresar la sintaxis requerida del lenguaje de comandos Tcl. Los comandos ingresados en el Example: modo de Router(tcl)# proc get_bri {} configuración Tcl se envían primero al intérprete interactivo Tcl. Si el comando no es un comando válido Tcl, se envía al analizador de sintaxis CLI. Paso 8 snmp_getbulk community-string non-repeaters max- (Opcional) extrae un repetitions oid [oid2 oid3...] gran parte de una Example: Router(tcl)# snmp_getbulk public 1 3 1.3.6.1.2.1.1.1 1.3.6.1.2.1.10.18.8.1.1 tabla MIB. • Utilice community-string el argumento para especificar la comunidad SNMP de quien los objetos serán extraídos. • Utilice nonrepeaters el argumento para especificar el número de objetos que se puedan extraer con una operación del Get Next. • Utilice maxrepetitions el argumento para especificar el número máximo de operaciones del Get Next para intentar mientras que intenta extraer los objetos restantes. • Utilice oid el argumento para especificar el ID del objeto para extraer. Paso 9 snmp_getid community-string Example: Router(tcl)# snmp_getid private (Opcional) extrae las variables siguientes de la entidad SNMP en el router: sysDesrc.0, sysObjectID.0, sysUpTime.0, sysContact.0, sysName.0, y sysLocation.0. • Utilice community-string el argumento para especificar la comunidad SNMP de quien los objetos serán extraídos. Paso 10 snmp_getnext community-string oid [oid2 oid3...] (Opcional) Recupera un conjunto de Example: Router(tcl)# snmp_getnext public 1.3.6.1.2.1.1.1.0 1.3.6.1.2.1.1.2.0 variables individuales de una tabla MIB. • Utilice community-string el argumento para especificar la comunidad SNMP de quien los objetos serán extraídos. • Utilice oid el argumento para especificar el ID del objeto para extraer. Paso 11 snmp_getone community-string oid [oid2 oid3...] Example: Router(tcl)# snmp_getone public 1.3.6.1.2.1.1.1.0 1.3.6.1.2.1.1.2.0 (Opcional) Recupera un conjunto de variables individuales de una tabla MIB. • Utilice community-string el argumento para especificar la comunidad SNMP de quien los objetos serán extraídos. • Utilice oid el argumento para especificar el ID del objeto para extraer. Paso 12 snmp_setany community-string oid type val [oid2 type2 val2...] Example: Router(tcl)# snmp_setany private 1.3.6.1.2.1.1.5.0 -d TCL-SNMP_TEST (Opcional) extrae los valores actuales de las variables especificadas de una tabla MIB y después realiza una petición del conjunto en las variables. • Utilice community-string el argumento para especificar la comunidad SNMP de quien los valores de los objetos serán extraídos y entonces fijar. • Utilice oid el argumento para especificar el ID del objeto para extraer y para fijar. • Utilice type el argumento para especificar el tipo de objeto para extraer y para fijar. • Utilice val el argumento para especificar el valor del objeto que se extraerá y después para fijar. Paso 13 exit Sale del modo de configuración de Tcl y vuelve al modo EXEC privilegiado. Example: Router(tcl)# exit Consejos de Troubleshooting Utilice el comando puts Tcl en un script Tcl a la ejecución del comando trace. Scripts TCL predefinido que se ejecuta Realice esta tarea optativa de ejecutar un script predefinido Tcl en Cisco IOS Software. Prerrequisitos Antes de realizar esta tarea, usted debe crear un script Tcl que pueda ejecutarse en el Cisco IOS Software. El script Tcl se puede transferir a la memoria de Flash interno usando cualquier sistema de archivos que el Cisco IOS File System (IF) soporte, incluyendo el TFTP, FTP, y el RCP. El script Tcl puede también ser originado de un lugar remoto. PASOS SUMARIOS 1. enable 2. tclsh 3. Ingrese el comando source Tcl con el nombre de fichero y la trayectoria. 4. exit PASOS DETALLADOS Comando o acción Propósito Paso enable 1 Habilita el modo EXEC privilegiado. Paso tclsh 2 Habilita el shell interactivo de Tcl e ingresa al modo de configuración de Tcl. • Example: Router> enable Example: Router# tclsh Ingrese su contraseña si se le pide que lo haga. Paso Ingrese el comando source Los comandos ingresados en el modo de 3 Tcl con el nombre de fichero y configuración Tcl se envían primero al intérprete la trayectoria. interactivo Tcl. Si el comando no es un comando Tcl válido, entonces se envía al parser de la CLI. Example: Router(tcl)# source slot0:test.tcl Paso exit 4 Example: Router(tcl)# exit Sale del modo de configuración de Tcl y vuelve al modo EXEC privilegiado. Ejemplos de Configuración de Cisco IOS Scripting with Tcl Esta sección proporciona los siguientes ejemplos de configuración: • Ejemplo: Script Tcl usando el comando show interfaces • Ejemplo: Script Tcl para el soporte S TP • Ejemplo: Script Tcl para el acceso del SNMP MIB Ejemplo: Script Tcl usando el comando show interfaces Usando el motor de la expresión normal Tcl, los scripts pueden filtrar la información específica show de los comandos y presentarla en un formato de encargo. Lo que sigue es un ejemplo de filtrar show interfaces la salida de comando y de crear una lista separado por coma de interfaces BRI en el router: tclsh proc get_bri {} { set check "" set int_out [exec "show interfaces"] foreach int [regexp -all -line -inline "(^BRI\[0-9]/\[0-9])" $int_out] { if {![string equal $check $int]} { if {[info exists bri_out]} { append bri_out "," $int } else { set bri_out $int } set check $int } } return $bri_out } Ejemplo: Script Tcl para el soporte S TP El script siguiente Tcl es útil para enviar los correos electrónicos de un router. ## ## Place required comments here!!! ## package provide sendmail 2.0 # Sendmail procedure for Support namespace eval ::sendmail { namespace export initialize configure sendmessage sendfile array set ::sendmail::sendmail { smtphost mailhub from "" friendly "" } proc configure {} {} proc initialize {smtphost from friendly} { variable sendmail if {[string length $smtphost]} then { set sendmail(smtphost) $smtphost } if {[string length $from]} then { set sendmail(from) $from } if {[string length $friendly]} then { set sendmail(friendly) $friendly } } proc sendmessage {toList subject body {tcl_trace 0}} { variable sendmail set smtphost $sendmail(smtphost) set from $sendmail(from) set friendly $sendmail(friendly) if {$trace} then { puts stdout "Connecting to $smtphost:25" } set sockid [socket $smtphost 25] ## DEBUG set status [catch { puts $sockid "HELO $smtphost" flush $sockid set result [gets $sockid] if {$trace} then { puts stdout "HELO $smtphost\n\t$result" } puts $sockid "MAIL From:<$from>" flush $sockid set result [gets $sockid] if {$trace} then { puts stdout "MAIL From:<$from>\n\t$result" } foreach to $toList { puts $sockid "RCPT To:<$to>" flush $sockid } set result [gets $sockid] if {$trace} then { puts stdout "RCPT To:<$to>\n\t$result" } puts $sockid "DATA " flush $sockid set result [gets $sockid] if {$trace} then { puts stdout "DATA \n\t$result" } puts $sockid "From: $friendly <$from>" foreach to $toList { puts $sockid "To:<$to>" } puts $sockid "Subject: $subject" puts $sockid "\n" foreach line [split $body "\n"] { puts $sockid " $line" } puts $sockid "." puts $sockid "QUIT" flush $sockid set result [gets $sockid] if {$trace} then { puts stdout "QUIT\n\t$result" } } result] catch {close $sockid } if {$status} then { return -code error $result } return } proc sendfile {toList filename subject {tcl_trace 0}} { set fd [open $filename r] sendmessage $toList $subject [read $fd] $trace return } } Ejemplo: Script Tcl para el acceso del SNMP MIB Usando el shell Tcl, los comandos Tcl pueden realizar las acciones en el MIB. El siguiente ejemplo muestra cómo configurar las cadenas del acceso de la comunidad para permitir el acceso al SNMP. El acceso público es solo lectura, pero el acceso privado es de lectura/grabación. El siguiente ejemplo muestra cómo extraer un gran parte de una tabla inmediatamente usando snmp_getbulk la extensión del comando Tcl. Dos argumentos, non-repeaters y max-repetitions, deben ser fijados cuando snmp_getbulk se publica un comando. nonrepeaters El argumento especifica que los primeros objetos N deben ser extraídos con un funcionamiento simple snmp_getnext . max-repetitions El argumento especifica que hasta M snmp_getnext las operaciones deben ser intentadas extraer los objetos restantes. En este ejemplo, se utilizan tres atascamientos — el sysUpTime (1.3.6.1.2.1.1.2.0), el ifDescr (1.3.6.1.2.1.2.2.1.2), y el ifType (1.3.6.1.2.1.2.2.1.3) —. El número total de vinculaciones de variable pedidas es dado por la fórmula N + (M * R), donde está el número N de NON-repetidores (en este ejemplo 1), M es las MAX-repeticiones (en este ejemplo 5), y R es el número de los objetos de la petición (en este caso 2, de ifDescr y de ifType). Usando la fórmula, 1 + (5 * 2) iguales 11; y éste es el número total de vinculaciones de variable que se puedan extraer por este snmp_getbulk comando de la petición. Los resultados de la muestra para las variables individuales incluyen un valor extraído de sysUpTime.0 que es 1336090, donde está la unidad en los milisegundos. El valor extraído de ifDescr.1 (la primera descripción de la interfaz) es FastEthernet0/0, y el valor extraído de ifType.1 (el primer tipo de interfaz) es 6, que corresponde al tipo del ethernetCsmacd. snmp-server community public RO snmp-server community private RW tclsh snmp_getbulk public 1 5 1.3.6.1.2.1.1.2.0 1.3.6.1.2.1.2.2.1.2 1.3.6.1.2.1.2.2.1.3 {<obj oid='sysUpTime.0' val='1336090'/>} {<obj oid='ifDescr.1' val='FastEthernet0/0'/>} {<obj oid='ifType.1' val='6'/>} {<obj oid='ifDescr.2' val='FastEthernet1/0'/>} {<obj oid='ifType.2' val='6'/>} {<obj oid='ifDescr.3' val='Ethernet2/0'/>} {<obj oid='ifType.3' val='6'/>} {<obj oid='ifDescr.4' val='Ethernet2/1'/>} {<obj oid='ifType.4' val='6'/>} {<obj oid='ifDescr.5' val='Ethernet2/2'/>} {<obj oid='ifType.5' val='6'/>} El siguiente ejemplo muestra cómo extraer las variables sysDescr.0, sysObjectID.0, sysUpTime.0, sysContact.0, sysName.0, y sysLocation.0 — en este ejemplo mostrado como system.1.0, system.2.0, system.3.0, system.4.0, system.5.0, y system.6.0 — de la entidad SNMP en el router que usa snmp_getid la extensión del comando Tcl. tclsh snmp_getid public {<obj oid='system.1.0' val='Cisco Internetwork Operating System Software Cisco IOS(tm) 7200 Software (C7200-IK9S-M), Experimental Version 12.3(20030507:225511) [geotpi2itd1 124] Copyright (c) 1986-2003 by Cisco Systems, Inc. Compiled Wed 21-May-03 16:16 by engineer'/>} {<obj oid='system.2.0' val='products.223'/>} {<obj oid='sysUpTime.0' val='6664317'/>} {<obj oid='system.4.0' val='1-800-553-2447 - phone the TAC'/>} {<obj oid='system.5.0' val='c7200.myCompany.com'/>} {<obj oid='system.6.0' val='Bldg 24, San Jose, CA'/>} El siguiente ejemplo muestra cómo extraer un conjunto de las variables individuales de la entidad SNMP en el router que usa snmp_getnext la extensión del comando Tcl: snmp_getnext public 1.3.6.1.2.1.1.1.0 1.3.6.1.2.1.1.2.0 {<obj oid='system.2.0' val='products.223'/>} {<obj oid='sysUpTime.0' val='6683320'/>} El siguiente ejemplo muestra cómo extraer un conjunto de las variables individuales de la entidad SNMP en el router que usa snmp_getone la extensión del comando Tcl: snmp_getone public 1.3.6.1.2.1.1.1.0 1.3.6.1.2.1.1.2.0 {<obj oid='system.1.0' val='Cisco Internetwork Operating System Software Cisco IOS(tm) 7200 Software (C7200-IK9S-M), Experimental Version 12.3(20030507:225511) [geotpi2itd1 124] Copyright (c) 1986-2003 by Cisco Systems, Inc. Compiled Wed 21-May-03 16:16 by engineer'/>} {<obj oid='system.2.0' val='products.223'/>} El siguiente ejemplo muestra cómo cambiar algo en la configuración del router que usa snmp_setany la extensión del comando Tcl. En este ejemplo, el nombre de host del router se cambia a TCLSNMP-HOST. tclsh snmp_setany private 1.3.6.1.2.1.1.5.0 -d TCLSNMP-HOST {<obj oid='system.5.0' val='TCLSNMP-HOST'/>} Referencias adicionales Las secciones siguientes proporcionan las referencias relacionadas con el scripting del Cisco IOS con la característica Tcl. Documentos Relacionados Tema relacionado Título del documento Embedded Syslog Manager (ESM) Módulo integrado del administrador del Syslog Comandos de la Administración de redes (Tcl incluyendo y comandos Referencia de Comandos de logging): sintaxis de comandos completa, valores predeterminados, Administración de Redes de modo de comandos, historial de comandos, pautas de uso y ejemplos Cisco IOS Estándares Estándares Título Esta función no soporta estándares nuevos o modificados, y el soporte de los estándares existentes no ha sido modificado por ella. — MIB MIB Link del MIB Esta función no soporta MIBs nuevas o modificadas, y el soporte para las MIBs existentes no ha sido modificado por esta función. Para localizar y descargar MIB de plataformas, versiones de Cisco IOS y conjuntos de funciones seleccionados, utilice Cisco MIB Locator, que se encuentra en la siguiente URL: RFC http://www.cisco.com/cisco/web/LA/support/index.html RFC Título Esta función no soporta RFCs nuevos o modificados, y el soporte de los RFCs existentes no ha sido modificado por ella. — Asistencia Técnica Descripción Link El sitio Web de soporte técnico de Cisco http://www.cisco.com/cisco/web/LA/support/index.html proporciona los recursos en línea extensos, incluyendo la documentación y las herramientas para localizar averías y resolver los problemas técnicos con los Productos Cisco y las Tecnologías. Para recibir la Seguridad y la información técnica sobre sus Productos, usted puede inscribir a los diversos servicios, tales como la herramienta de alerta del producto (accedida de los Field Notice), el hoja informativa de los servicios técnicos de Cisco, y alimentaciones realmente simples de la sindicación (RSS). El acceso a la mayoría de las herramientas en el sitio Web de soporte técnico de Cisco requiere una identificación del usuario y una contraseña del cisco.com. Información sobre la Función Cisco IOS Scripting with Tcl El cuadro 4 enumera el historial de la versión para esta característica. Puede que no estén disponibles todos los comandos en su versión de software de Cisco IOS. Para la información de versión sobre un comando específico, vea la documentación de referencia de comandos. Utilice el Cisco Feature Navigator para encontrar la información sobre el soporte del Soporte de la plataforma y de la imagen del software. Cisco Feature Navigator le permite determinar qué imágenes de Cisco IOS y Catalyst OS Software soportan una versión de software, un conjunto de funciones o una plataforma específica. Para acceder a Cisco Feature Navigator, vaya a http://www.cisco.com/go/cfn. Una cuenta en el cisco.com no se requiere. Observelas listas del cuadro 4 solamente la versión de Cisco IOS Software que introdujo el soporte para una característica dada en un tren de versión del Cisco IOS Software dado. A menos que se indique lo contrario, las versiones posteriores de dicha serie de versiones de software de Cisco IOS también soportan esa función. Nombre de la función Versiones Información sobre la Función Cisco IOS 12,3(2)T Scripting with 12.3(7)T Tcl 12.2(25)S 12.2(33)SXH 12.2(33)SRC 12.2(33)SB Cisco IOS XE 3.1.0SG El scripting del Cisco IOS con la característica Tcl proporciona la capacidad de funcionar con los comandos de la versión 8.3.4 Tcl de la interfaz de la línea de comandos del Cisco IOS. Acceso del SNMP MIB Tcl 12.3(7)T 12.2(25)S 12.2(33)SXH 12.2(33)SRC 12.2(33)SB Cisco IOS XE 3.1.0SG La característica de acceso del SNMP MIB Tcl presenta a un conjunto Unix-como de los comandos SNMP de hacer el acceso a los objetos de MIB del Simple Network Management Protocol (SNMP) más fácil. 15.1(1)T La característica Tcl UDP y VRF proporciona el soporte para los socketes UDP en IOS Tcl. Soporte TCL UDP y VRF Se han insertado o modificado los siguientes comandos: scripting tcl encdir scripting tcl init scripting tcl low-memory tclquit tclsh. La sección siguiente tiene más información: • Usando el shell Tcl para acceder los objetos del SNMP MIB. Se han insertado o modificado los siguientes comandos: fconfigure, socket udp_open udp_peek. Glosario ESM — Administrador integrado del Syslog. IVR — Respuesta de voz interactiva. MIB — Management Information Base. SNMP — Protocolo administración de red simple. Tcl — Tool Command Language. La notaconsidera los términos de funcionamiento entre redes y las siglas para los términos no incluidos en este glosario. Cisco and the Cisco Logo are trademarks of Cisco Systems, Inc. and/or its affiliates in the U.S. and other countries. A listing of Cisco's trademarks can be found at www.cisco.com/go/trademarks. Third party trademarks mentioned are the property of their respective owners. The use of the word partner does not imply a partnership relationship between Cisco and any other company. (1005R) Any Internet Protocol (IP) addresses used in this document are not intended to be actual addresses. Any examples, command display output, and figures included in the document are shown for illustrative purposes only. Any use of actual IP addresses in illustrative content is unintentional and coincidental. © 2003-2010 Cisco Systems, Inc. All rights reserved. © 1992-2013 Cisco Systems Inc. Todos los Derechos Reservados. Fecha de Generación del PDF: 2 Agosto 2013 http://www.cisco.com/cisco/web/support/LA/107/1073/1073582_nm_script_tcl_ps6922_TSD_Products_Configuration_Guide_Chapter.html