• No se han encontrado resultados

Sistema de Monitoreo y Alarmas Basado en SNMP Edición Única

N/A
N/A
Protected

Academic year: 2020

Share "Sistema de Monitoreo y Alarmas Basado en SNMP Edición Única"

Copied!
100
0
0

Texto completo

(1)

(2) SISTEMA DE M O N ITOREO Y A L A R M A S B A S A D O EN S N M P. T E S I S. MAESTRÍA EN CIENCIAS ESPECIALIDAD EN INGENIERÍA DE SISTEMAS COMPUTA CIONALES. INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY POR. J A V I E R A L B E R T O GIESE RUIZ. SEPTIEMBRE DE. 1994.

(3) SISTEMA DE MONITOREO Y ALARMAS BASADO EN SNMP. TESIS. MAESTRIA EN CIENCIAS ESPECIALIDAD EN INGENIERIA DE SISTEMAS COMPUTACIONALES. INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY. POR. JAVIER ALBERTO GIESE RUIZ. SEPTIEMBRE DE 1994.

(4) SISTEMA DE MONITOREO Y ALARMAS BASADO EN SNMP. POR. JAVIER ALBERTO GIESE RUIZ. TESIS. Presentada a la División de Graduados e Investigación Este Trabajo es Requisito Parcial para Obtener el Título de Maestro en Ciencias. INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY. SEPTIEMBRE DE 1994.

(5) INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY DIVISIÓN DE GRADUADOS E INVESTIGACIÓN PROGRAMA DE GRADUADOS EN INFORMATICA. Los miembros del comité de tesis recomendamos que la presente tesis del Ing. Javier Alberto Giese Ruiz sea aceptada como requisito parcial para obtener el grado académico de Maestro en Ciencias especialidad en: INGENIERIA DE SISTEMAS COMPUTACIONALES. Septiembre de 1994.

(6) A mis padres, por su apoyo y confianza incomparables en todo momento de mi vida..

(7) RECONOCIMIENTOS. Deseo agradecer de la manera más sincera la confianza que depositó en mí el Ing. Eduardo Salcedo Delgado, mi asesor principal, para diseñar e implementar este ambicioso proyecto. Su tiempo y su apoyo como asesor y guía fueron tan importantes para mí como su amistad y entusiasmo, como compañero y amigo. Esto muestra un ejemplo a seguir para cualquier asesor de Tesis.. También quiero agradecer a todos aquellos que, directa o indirectamente, intervinieron en la realización de este trabajo, en especial: a mis asesores secundarios, el Dr. Jorge Olvera y el Ing. Mario de la Fuente, por su confianza incomparable en mí; a mis compañeros de trabajo, por su preocupación y palabras de aliento; al Ing. Ciro Velázquez, por su indiscutible apoyo técnico; y sin olvidar a aquellos grandes amigos que, por su motivación y empuje me animaron siempre a avanzar y ayudaron a levantarme cada vez que llegué a tropezar.. Javier Alberto Giese Ruiz. Septiembre, 1994. v.

(8) RESUMEN. Esta tesis se forma del diseño e implementación de un sistema de monitoreo para la administración de sistemas conformados de redes heterogéneas. Se seleccionó, para su elaboración, el empleo de la estación de trabajo NeXT, por las facilidades que ésta ofrece, para el desarrollo de aplicaciones y las características propias de este tipo de equipo.. En el presente documento se explican los siguientes aspectos: descripción breve del protocolo SNMP y definición de su terminología básica; la justificación del desarrollo de un sistema de monitoreo para la administración de redes heterogéneas; se describen las características y funciones desarrolladas del sistema monitor y la forma en que éstas fueron implementadas, y finaliza comentando las pruebas realizadas y los resultados obtenidos.. vi.

(9) TABLA DE CONTENIDO Página Reconocimientos. v. Resumen. vi. Tabla de contenido. vil. Usta de figuras. ix. Lista de tablas. x. CAPÍTULO 1. Protocolo SNMP. 1. 1.1 Antecedentes. 1. 1.2 Ambiente de SNMP. 5. 1.2.1 Conveniencia. 6. 1.2.2 Estaciones administradoras. 6. 1.2.3 Conceptos de SNMP. 7. CAPÍTULO 2. Justificación. 11. 2.1 Características de sistemas de monitoreo y administración de redes. 11. 2.2 Situación actual, el problema y la justificación del trabajo desarrollado. 12. vii.

(10) CAPÍTULO 3. Descripción del sistema monitor desarrollado 3.1 Características del sistema monitor desarrollado. 17 17. 3.2 Descripción de las funciones implementadas en el sistema monitor. 18.. CAPÍTULO 4. Implementación del sistema monitor. 20. 4.1 Implementación de las funciones de monitoreo. 20. 4.2 Implementación de las funciones de administración..... 25. CAPÍTULO 5. Pruebas. 28. 5.1 Pruebas realizadas. 28. CAPÍTULO 6. Conclusiones. 30. APÉNDICE A. Terminología. 39. APÉNDICE B. Rutinas. 44. APÉNDICE C. Ejemplos de archivos de registro. 82. Bibliografía. 92. VITA.. 94. viii.

(11) LISTA DE FIGURAS Página Figura 1.1. Capas de SNMP. 5. Figura 1.2. Relación entre el Administrador, SNMP y objetos administrados... 8. Figura 2.1. Protocolos de administración incompatibles de diferentes firmas.. 13. Figura 2.2. Protocolos de administración compatibles de diferentes firmas..... 16. Figura 4.1. Aplicación desarrollada para monitoreo bajo SNMP. 20. Figura 4.2. Ejemplo del menú principal seleccionando la opción Alarmas. 21. Figura 4.3. Ejemplo de funciones seleccionadas disponibles a monitorear..... 22. Figura 4.4. Botón para activación de proceso de monitoreo. 22. Figura 4.5. Botón para inicializar área de funciones para monitorear. 23. Figura 4.6. Botón de Alarma que indica alguna anomalía en el monitoreo. 23. Figura 4.7. Ejemplo del panel de fallas ante un problema. 24. Figura 4.8. Panel principal. 24. Figura 4.9. Opciones de activación de alarma. 25. Figura 4.10. Funciones disponibles para monitoreo y control de la red. 25. Figura 4.11. Ejemplo de la selección de un parámetro. 26. Figura 4.12. Panel de parámetros y descripción de la función. 26. Figura 4.12. Ejemplo de un Get. 27.. ix.

(12) LISTA DE TABLAS. Tabla 1.1. Evolución de los protocolos de monitoreo. X. Página 3.

(13) CAPITULO 1 Protocolo SNMP. Conforme pasan los anos, más compañías que se dedican al desarrollo de sistemas de cómputo y cornunicaciones, producen nuevas estaciones de trabajo y servidores de terminales e impresión, nuevos sistemas de compuertas de comunicación y dispositivos como puentes, concentradores y multicanaJizadores, y los introducen al mercado, complicando más la tarea de administración de redes.. El problema se visualiza cuando se desea interconectar y comunicar todos estos dispositivos al unísono. Debido a la heterogeneidad del equipo en casi cualquier red actual, es imperativo el manejo de un protocolo común para facilitar su administración.. En 1990, SNMP (Simple Network Management ProtocoJ) se establece como protocolo estándar con estatus de "recomendado" por IAB (Internet Activities Board), el cuerpo encargado en el desarrollo técnico de protocolos para la red Internet. 1.1 ANTECEDENTES.. Axioma Fundamental:. "El impacto de agregar administración de la red a nodos administrados debe ser mínima, reflejando un mínimo común denominador." [Ros,91] 1.

(14) 2 Debido a un rápido crecimiento de redes conectadas a Internet la responsabilidad de administrar partes de la red a un nivel de columna principal y el uso de equipo de diferentes firmas, fue necesario crear un modelo de administración de redes que cubriera estas necesidades.. En la tabla 1.1 se muestra el desarrollo de protocolos de administración, desde que se tenía únicamente un monitoreo de nodos hasta que aparece SNMP como protocolo estándar.. La investigación preliminar se encaminó a los protocolos de transferencia de ciatos, sin prever el impacto que la administración tendría cuando estos protocolos se difundieran considerablemente. Las primeras redes utilizando estos protocolos se conectaron a través de compuertas de comunicación del mismo distribuidor. En los 80's, las redes incrementaron su tamaño a más del doble, y se conformaron por distintos distribuidores. De esta forma, la administración de la red se llevaba a cabo por diversas organizaciones, cada una encargada de un nivel diferente de la misma (nivel interno, nivel regional, nivel campus, etc.)..

(15) 3. 1987. SGMP Simple Gateway Monltorlng Protocol HEMS Hlgh-level E n t i t y Management System OSI networfc management protocol and framework CMOT CMIP Common Management Information Protocol T C P T r a n s m l s s l o n Control P r o t o c o l. 1988. IAB Internet A c t l v l t f e s Board SGMP CMOT SNMP. 1989. SNMP se eleva a s t a t u s recomendable. 1990. SNMP.SMI V MIB-I se elevan a protocolos E s t á n d a r. Tabla 1.1 Evolución de protocolos de monitoreo.. En 1987, un pequeño grupo de gurús en redes, tanto investigadores como de la industria, decidieron llevar algo a cabo para resolver este problema. Un primer esfuerzo se presentó produciendo un protocolo de monitoreo simple de compuertas de comunicación (SGMP), que en poco tiempo tuvo una creciente aceptación en el exterior. Un segundo esfuerzo fue un proyecto de investigación, llamado Sistema de Administración de alto nivel de Entidades (HEMS), que aunque tuvo novedosos conceptos, nunca vio la luz. El tercer esfuerzo lo llevó a cabo gente de la comunidad de Internet, proponiendo utilizar el protocolo de administración de red de la OSI, basado en tos protocolos de Internet. Esto se llamó CMOT (CMIP over TCP)..

(16) 4 Tiempo después, en 1988, el Consejo de Actividades de Internet (IAB) reunió un comité para resolver la controversia entre las tres opciones. Se analizaron estas propuestas y de ellas se vio que HEMS sufría la desventaja de no tener la aceptación de SGMP, ni el respaldo de la OSI con que contaba CMOT. De aquí emergieron dos posibilidades:. 1. SGMP fuera utilizado como protocolo de administración de redes en la comunidad Internet, pero como solución a corto plazo.. 2. La propuesta basada en OSI tuviera mayor apoyo en investigación y experimentación, para eventualmente convertirse en la solución a largo plazo.. De estas dos nuevas propuestas, se desarrolló un protocolo que siguiera los lineamientos tanto de SGMP como de CMOP, apareciendo el protocolo llamado Protocolo Simple de Administración de Redes (Simple Network Management Protocol, SNMP).. Este nuevo protocolo se eleva en 1989 a un estatus de "recomendado", y se convierte en el estándar operacional de tacto para la administración de redes basadas en TCP/IP. Rápidamente se percibió la aceptación de SNMP al incluir diversos distribuidores, una mínima implementación de este protocolo en sus productos.. Un año después, en 1990, la Estructura de Administración de Información (SMI), la Base de datos de Administración de Información (MIB-I) y SNMP se elevan al nivel de protocolos "estándar" con estatus "recomendado" por la IAB..

(17) 5 1.2 AMBIENTE DE SNMP.. SNMP fue inventado a fines de los 80's para ayudar a administrar Internet la red académica y de investigación basada en TCP/IP, y desde entonces el protocolo se volvió un estándar Me tacto" para la administración de redes. En teoría, SNMP permite a cualquier estación de administración que use el protocolo SNMP monitorear y controlar cualquier dispositivo de la red o computadora que entienda SNMP. En la práctica, esto es un poco más complicado, puesto que involucra atravesar varias capas de protocolos, tal y como lo muestra la figura 1.1.. Figura 1.1. Capas de SNMP.. SNMP necesita de tres tipos de software: uno para el administrador (software para administración de redes), y dos para cada dispositivo que se quiera administrar (un agente y una base de información para administración, o MIB)..

(18) 6 A diferencia del software de administración de redes propietario, el software de administración de SNMP no proviene de una sola fuente. Una compañía que construye ruteadores escribirá su propio agente SNMP y su propio MIB, pero la estación de administración puede venir de cualquier otro lado. No obstante, la estación administradora y el software de los dispositivos no trabajarán entre sí a menos que ambos utilicen el mismo protocolo de transporte.. 1.2.1 CONVENIENCIA.. SNMP puede ahorrar tiempo y frustraciones, pero sólo si se está administrando una gran red. SNMP requiere de una inversión significativa de tiempo por parte del administrador, para aprender el software, para configurarlo a su medio de trabajo, para afinarlo, y para hacer uso de la información que se recolecte.. En otras palabras, si la red consiste de cinco PCs y una impresora Láser, SNMP no es k) indicado. Pero si tiene una red en crecimiento, expansión o multiprotocolo, lo más seguro es que se necesite de SNMP.. 1.2.2 ESTACIONES ADMINISTRADORAS.. La mayoría de las estaciones de administración tienen dos funciones primordiales: monitoreo y configuración. Una estación monitorea una red al efectuar sondeo periódicamente a cada dispositivo y tomando la acción correspondiente en caso de problemas. Algunas estaciones, únicamente prueban si los dispositivos están o no fuera de alcance. (Por ejemplo, ¿el dispositivo sigue.

(19) 7 activo y corriendo?) Otras, se encargan de actividades más sofisticadas, como solicitudes, verificación de razones de error, razón de desempeño, y otros importantes indicadores de la "salud" de la red.. Cuando hay un problema, la estación administradora puede llevar a cabo distintas acciones: puede escribir un archivo de log, hacer sonar una alarma audible(como un "beep" o algún sonido pregrabado), enviar un mensaje de correo electrónico, o enviar un mensaje ai Radio Beep del administrador de la red con las malas nuevas.. La otra tarea de la administración es la configuración. Conforme se van agregando nuevos dispositivos a la red, y el estatus de la misma cambia, también deben modificarse los valores de omisión que vienen de fábrica. No hay que perder de vista que las estaciones de administración sólo pueden controlar dispositivos en la red hasta el extremo que sus agentes y sus MIBs lo permitan.. 1.2.3 CONCEPTOS DE SNMP.. El modelo de SNMP para la administración de redes se basa en tres tipos básicos de software: agentes, MIBs y estaciones de administración.. Los agentes son software que corre en cada dispositivo de la red. Ellos tienen información almacenada en una base de datos llamada MIB, que reside en el dispositivo. En la figura 1.2 se muestran las operaciones básicas a través de los cuales se mantienen en contacto el sistema administrador contosagentes, ya sea para conseguir o modificar información..

(20) 8. Frontera para el peso de PDUe. Figura 1.2. Relación entre el Administrador, SNMP y objetos administrados.. Las estaciones de administración permiten recuperar y mostrar información recolectada del agente de un dispositivo y de un MIB. Ocasionalmente, las estaciones administradoras pueden incluso controlar (a través de un SET, en términos de SNMP) estos dispositivos.. Cada registro en un MIB es conocido como una variable de esa MIB. Por ejemplo, una variable común de MIB para una computadora Macintosh es sysDescr, la cual describe el hardware y software del sistema. Si se utiliza una estación administradora para recuperar (a través de un GET, en términos de SNMP) la variable sysDescr de una Macintosh, se obtendrá una respuesta como "Macintosh Quadra 800, System 7.1"..

(21) 9 Dependiendo de qué tan sofisticada sea la estación administradora de la red, se podrá conseguir cada parte de la información de distintos dispositivos separadamente, o se podrá conseguir por completo de una sola vez. Igualmente, la forma en que la información se desplegará e interpretará dependerá del software de la estación administradora.. También puede almacenarse información que un agente de SNMP no puede recolectar desde una computadora con una variable del MIB. Por ejemplo, puede asignarse (SET) la variable sysLocation de una computadora en particular que sea Edificio Administrativo, oficina 102. Un administrador que luego solicite esta variable podrá conocer dónde se encuentra localizado este equipo.. Además de las operaciones básicas de Get y Sel SNMP también cuenta con Traps, esto es, avisos de eventos enviados por el agente de un dispositivo de la red a la estación administradora. Esta operación ayuda a los administradores a observar la red sin tener que estar preguntando constantemente a cada dispositivo su información de estado. Por ejemplo, un Trap es CoIdStart, el cual envía el agente de un ruteador cada vez que este se reinicializa. Igualmente, lo que lleva a cabo una estación administradora cuando recibe un Trap, varía. Puede solamente escribir la información en un archivo, o enviarla al administrador por correo electrónico (e-mail) o a su "beeper", o podría iniciar alguna otra acción, como bajar la información de la configuración del dispositivo.. Hay muchos tipos de MIBs definidos para SNMP. El MIB básico, llamado MIB II (el cual reemplazó al MIB I) incluye un conjunto básico de variables para cualquier dispositivo de una red. Muchas compañías soportan todo o parte del.

(22) 10 MIB estándar, pero muchas otras definen MIB privados que trabajan únicamente con sus equipos. Este tipo de MIBs comúnmente incluyen opciones estadísticas especiales o de configuración que no están definidas en MIB I o II. Muchos dispositivos de redes soportan más de un MIB, y de esta forma, una estación administradora puede tener además del MIB básico, uno privado. Así, por ejemplo, un ruteador puede tener un MIB privado que sólo es útil para él, y que no tiene significado alguno para un concentrador, aún y cuando ambos utilicen además el MIB estándar..

(23) CAPITULO 2 Justificación. 2.1 CARACTERÍSTICAS DE SISTEMAS DE MONITOREO Y ADMINISTRACIÓN DE REDES.. ¿Por qué es importante un buen sistema de monitoreo y de administración de redes? Porque actualmente las redes están en continuo crecimiento y cada vez más se van formando de diversos dispositivos de distintos distribuidores. Tanta heterogeneidad en el equipo puede hacer difícil la labor de administración y monitoreo de una red, especialmente si ésta de por sí ya es grande.. Por ejemplo, en caso de falla de un ruteador, un sistema debe ser capaz de accesar la información y mensajes de error de la última hora a la computadora del administrador, luego sonar una alarma y marcar un "beeper". Cuando el administrador se dé de alta, toda la información que necesite la tendrá ahí.. Un administrador de una red puede utilizar un protocolo de administración si quiere extraer información de un dispositivo indistintamente de su configuración y estatus, así como información del tráfico entrante y saliente.. Para tener un dispositivo bajo un estándar de administración, un distribuidor debe instalar una cierta cantidad de software "agente" en él. Un agente maneja todas las solicitudes entrantes de un "administrador", el cual puede preguntar al agente a leer o actualizar la base de datos de información de administración (MIB).. 11.

(24) 12 No obstante, un agente no siempre tiene que esperar a que se le pregunte por la información: cuando aparece un problema serio, el agente puede notificar a uno o más administradores.. El problema de administrar una red puede verse como cinco sub-probiemas:. * Administración de la configuración, la cual es la responsable de detectar y controlar el estado de la red (tanto la configuración lógica como la física). * Administración del desempeño, la cual es la responsable de controlar y analizar características de desempeño y la razón de errores en la red (incluyendo información histórica). * Administración de fallas, la cual es la responsable de detectar, aislar y controlar el funcionamiento anormal de la red, como excesivos cortes de electricidad. * Administración de contabilidad, la cual es la responsable de reunir y procesar información relacionada al consumo de los recursos en la red. * Administración de la red, la cual es la responsable de controlar el acceso a los recursos de la red a través del uso de técnicas de autentificaáón y políticas de autorización.. 2.2 SITUACIÓN ACTUAL, EL PROBLEMA Y LA JUSTIFICACIÓN DEL TRABAJO DESARROLLADO.. El ITESM Campus Monterrey cuenta con una red heterogénea, formada por arquitecturas tales como Token Ring, Ethernet y AppleTaJk. Dentro del equipo existente, se cuenta con máquinas IBM, Apple, Digital, SUN y HP. Luego entonces, la administración de esta red con equipos tan distintos, no es tarea fácil..

(25) 13 (Ver figura 2.1).. ¿Cuál fabricante? ¿Formato del mensaje? ¿Significado de los campos?. Figura 2.1. Protocolos de administración incompatibles de diferentes firmas.. La red del Campus tiene un anillo principal de fibra óptica que comunica a todos tos edificios a 10 Mbps. A este anillo se conectan el rastro de las redes existentes, que son otros anillos (a 4 Mbps), Ethernet (a 10 Mbps) y AppleTaik ( a 256 Kbps).. Los tipos de enlaces siendo utilizados actualmente son: * Microondas, para la comunicación con la escuela de medicina. * Satélite, únicamente para comunicarse con la UNAM. * RDI, hacia EU, a tos Campus Eugenio Garza Sada y Eugenio Garza Lagüera. y al Campus Ciudad de México..

(26) 14. Los servicios y aplicaciones que se ofrecen a través de la red son muy diversos. Por ejemplo:. * Correo electrónico. * Emulación de terminal. * Transferencia de archivos. * Compartición de recursos y aplicaciones.. La administración de la red es llevada a cabo en el centro de cómputo, utilizando paquetes tales como Sniffer y LANManager. Sniffer provee la facilidad de "capturar" y analizar tos paquetes que circulan por la red Ethernet mientras que LANManager provee funciones de administración sólo sobre Token Ring.. Debido al tipo de aplicaciones y servicios soportados en las distintas redes del Instituto, la carga de trabajo en cada una de ellas es muy distinta. Mientras que en ciertas fechas existe una gran demanda de las redes académicas por el uso de aplicaciones estadísticas, aplicaciones que permiten grupos de discusión y herramientas computacionales de diseño, las redes administrativas se mantienen relativamente a un mismo nivel de demanda, empleando comunicación entre usuarios, la compartición de recursos y aplicaciones y la transferencia de archivos.. Cuando aparece un problema en la red, LANManager emite un sonido de alarma una sola vez, y si alguien cercano a éste lo escucha, entonces podrá saber de la falla. En caso contrario, esta aplicación da por hecho el servicio de alarma, y no lo vuelve a tomar en cuenta. Esto necesita que existan personas cerca de la.

(27) 15 máquina dedicada con este paquete para poder tener conocimiento de las fallas en la red, ya sea por el sonido de la alarma, o por buscar en alguna parte de la pantalla si nace mención a alguna falla específica. Lo que se hace actualmente es que la gente encargada de la red tiene asignada la obligación de verificar, cada vez que pase cerca del LANManager, si existe o no alguna falla en la red del Campus.. Sin embargo, la mejor aJarma para detectar fallas en la red siguen siendo los usuarios. Una vez que éstos tratan de accesar los servicios de la red y no pueden hacerlo, simplemente se comunican con las personas encargadas de su mantenimiento y reportan la falla.. El uso de la administración dentro de la red permite reducir los promedios de fallas al monitorear aquellas situaciones que pueden provocar problemas, y así lograr que la red trabaje más eficientemente y mantener a los usuarios felices.. Minimizar el número de usuarios afectados por una falla es una importante regla en la administración de la red. Esto tiene mucho que ver tanto con la productividad personal como con la integridad de la red. Es más fácil tratar con 12 usuarios enojados que con 120.. En una red bien administrada, una falla debe ser identificada y corregida fácilmente. Para esto, un adecuado protocolo de administración como SNMP y su estandarización en todos los dispositivos que se desean administrar en la red, lograría mantener a ésta en un muy buen funcionamiento. (Ver figura 2.2).

(28) 16. Figura 2.2. Protocolos de administración compatibles de diferentes firmas..

(29) CAPITULO 3 Descripción del sistema monitor desarrollado. 3.1 Características del sistema monitor desarrollado. Un servicio de administración de red se orienta, de manera general, a básicamente tres usos:. * Monitoreo, en donde se reúne la información de administración.. * Control, en donde los dispositivos son manipulados.. * Reporte, en donde los dispositivos reportan eventos fuera de lo normal.. Para el área de monitoreo, se implementaron funciones para recabar información de dispositivos siendo administrados. Estas funciones incluyen:. * preguntar directamente sobre información específica a algún dispositivo * generar un archivo o Tog" de monitoreo en donde se escriben todas las actividades que se llevan a cabo en esta área. Este archivotieneun nombre por omisión y ofrece la posibilidad de modificarlo por otro nuevo.. Para el área de control, se puede solicitar la modificación de variables de dispositivos bajo SNMP, a través de una función SET. Cualquier actividad de control se registra automáticamente en el mismo archivo de monitoreo.. 17.

(30) 18 Los reportes de eventos anormales que aparezcan durante la ejecución de este aplicación, aparecerán directamente en pantalla en una sección asignada para ello. Además, estos reportes serán almacenados en un archivo de eventos extraordinarios cuyo nombre está asignado por omisión, con la posibilidad de cambiado por otro distinto.. 3.2 Descripción de las funciones implementadas en el sistema monitor.. El protocolo de SNMP utiliza relativamente operaciones simples y un número limitado de unidades de datos del protocolo (PDUs) para llevar a cabo sus funciones. Estas funciones accesan información del MIB, el cual presenta la información en una estructura de datos de tipo árbol. Se han definido cinco PDUs en el estándar, y son los siguientes:. * Get Request Este PDU es utilizado para accesar al agente y obtener valores de una lista. Ésta lista contiene kientificadores que el agente distingue de entre múltiples posibles solicitudes de acuerdo a los parámetros dentro de un PDU, así como valores para ofrecer información sobre el estado del dispositivo en la red.. * Get-Next Request: Este PDU es similar al del Get Request, excepto en que éste permite regresar el siguiente ¡dentificador lógico en un árbol MIB. Es decir, mientras que el Get Request busca cierto valor dentro de la estructura del árbol, Get-Next busca el siguiente valor al especificado en el PDU, según su recorrido dentro de la estructura del MIB..

(31) 19 * Get Responso: Este PDU responde a las unidades de datos Get Request, GetNext Request y Set Request Contiene un identificador que lo asocia con el anterior POU (de tipo Request). También contiene identificadores para ofrecer información sobre el estado de la respuesta (códigos de error, estatus de error, y una lista de información adicional).. * Set Request Este es utilizado para describir una acción a ser ejecutada sobre un elemento. Típicamente es utilizado para cambiar tos valores de una variable en una lista, dentro de la estructura de árbol del MIB.. * Trap: Este PDU permite al móduio de administración de la red reportar un evento en un elemento de la red o cambiar el estado del elemento de la red..

(32) CAPITULO 4 Implementación del sistema monitor. 4.1 Implementación de las funciones de Administración.. Figura 4.1. Aplicación desarrollada para monitoreo bajo SNMP.. 20.

(33) 21 Como se muestra en la figura 4.1, la aplicación desarrollada prácticamente se divide en dos grandes partes:. 1. En la primer parte pueden realizarse funciones de recolección de información y de modificación de datos en ios dispositivos siendo administrados bajo el protocolo de SNMP. Esta sección se explicará más a detalle en el siguiente punto del capítulo.. 2. En la segunda parte se muestra la sección de reporte de fallas. Dicha sección consta a su vez de dos secciones: una de selección y activación de funciones a monitorear y otra de reporte de fallas y errores... Figura 4.2 Ejemplo del menú principal seleccionando la opción Alarmas.. * La sección de selección de funciones presenta cuatro campos en donde se mostrarán las posibles funciones a monitorear. Utilizando la opción de Alarmas del menú principal (mostrada en la figura 4.2), puede seleccionarse la opción Copiar.

(34) 22 parámetro, ta cual duplica el contenido del campo Parámetro en la primer localidad de las cuatro que se encuentre libre, incluyendo el nombre de la función que se encuentre seleccionada en ese momento.. Figura 4.3 Ejemplo de funciones seleccionadas disponibles a monitorear.. Es posible tener tos cuatro campos de funciones ocupados, pero sin tenerlas activadas, como lo muestra la figura 4.3. Para llevar esto a cabo, es necesario presionar el botón que se encuentra a un lado de la función que se desee empezar a monitorear. Pueden activarse todas o sólo aquellas con las que en ese momento se quiera empezar a trabajar. Una vez activadas las funciones, debe presionarse el botón Activar Monitoreo para que éste se lleve a cabo. (Rg. 4.4). Figura 4.4 Botón para activación de proceso de monitoreo.. Para detener el monitoreo, debe presionarse el botón Detener Monitoreo. Cuando este proceso esté detenido, es cuando se pueden seleccionar otras funciones, o activar o desactivar otras. Esto es, presionando el botón a un lado de las funciones. Si se quieren desactivar y borrar las cuatro funciones, basta con.

(35) 23. presionar el botón Inicializar mostrado en la figura 4.5.. Figura 4.5 Botón para inicializar área de funciones para monitorear.. * El botón de alarma (Fig. 4.6) se encenderá cada vez que ocurra algún evento fuera de lo normal en cualquiera de los dispositivos siendo administrados. Seguirá encendido hasta que el administrador de la estación lo presione, apagándolo. En este momento, la pantalla se limpiará y volverá a aparecer la leyenda: Todo está funcionando correctamente.". Figura 4.6 Botón de Alarma que indica alguna anomalía en el monitoreo.. * El área de reporte de eventos extraordinarios mostrará las razones por las cuales se activó el botón de fallas, o bien, algún mensaje relacionado con la selección y activación de funciones de monitoreo. Observando las razones de falla o de error en el panel, el administrador puede decidir cuál es la siguiente acción a tomar para solucionar el problema, o en su caso, el error..

(36) 24. Un ejemplo de falta puede ser como la que se muestra en la figura 4.2:. Figura 4.7 Ejemplo del panel de fallas ante un problema.. Mientras no se presione el botón de alarma, los mensajes de error por alarmas seguirán en el panel de aviso, y se irán acumulando con los nuevos que se lleguen a presentar. En todo momento, estos mensajes estarán siendo grabados al archivo por omisión ERRORES.TXT, o bien, al archivo asignado por el administrador mediante la opción Log fallas. (Ver figura 4.8). Figura 4.8 Panel principal..

(37) 25. Una alarma sonará en el momento de que lleguen tos mensajes de error, y se tendrá la opción de que suene únicamente en ese caso, o bien, que suene cada cierto intervalo hasta que la falla sea atendida, según se haya seleccionado en los botones de la figura 4.9... Figura 4.9 Opciones de activación de alarma.. 4.2 IMPLEMENTACION DE LAS FUNCIONES DE MONITOREO.. Como ya se mencionó anteriormente, las funciones de monitoreo y control se llevan a cabo a partir de tres funciones de SNMP donde el administrador tiene ei control. Estas son: Get Request, Get-Next Request y Set Request, como lo muestra la figura 4.10, proveniente de la pantalla del sistema monitor.. Figura 4.10 Funciones disponibles para monitoreo y control de la red..

(38) 26 De acuerdo a la función seleccionada, en el campo lateral a las operaciones disponibles, se mostrarán los parámetros seleccionados por medio de cualquier submenú de la opción Parámetros del menú principal (ver figura 4.11), correspondientes a la función.. Figura 4.11 Ejemplo de la selección de un parámetro.. En el panel inmediato inferior, se desplegará un pequeño texto explicando la utilidad de la función seleccionada. (Ver figura 4.12). Figura 4.12 Panel de parámetros y descripción de la función..

(39) 27 Conforme ai valor del parámetro, en el panel de respuesta a la operación aparecerán precisamente aquellos valores que fueron solicitados, o en su caso, un mensaje de respuesta por la activación de un Set.. A continuación se presenta en la figura 4.13 un ejemplo de un Get, solicitando la información de la dirección del siguiente salto de un ruteador (ipRouteNextHop) cuya dirección de ip es 128.11.4.1; parámetro cuya dirección completa se vería como:. iso.org.dCKJ.intemet.mgmt.mib.ip.ipRoutingTable.ipRouteEntry.inRoutNextHop.128. 11.4.1.. Figura 4.13 Ejemplo de un Get..

(40) CAPITULO 5 Pruebas. 5.1 PRUEBAS REALIZADAS.. Con la aplicación se llevaron a cabo varias pruebas, a lo largo de su implementación. Esto es, como fue evolucionando la aplicación debido a cambios necesarios por modificación de su diseño, sugeridos por el asesor y por el tesista, y por limitación de las funciones de SNMP empleadas.. Para la fase de monitoreo, la función que más se utilizó fue la de Status. Esto fue debido a su facilidad de empleo, al no necesitar de muchos parámetros y principalmente porque no presentó ningún problema al momento de su implementación en la aplicación. Con esta función se estuvieron mon¡toreando manualmente todas las máquinas Academ (académicas) del campus, así como la máquina Campus, y varios ruteadores y multiplexores entre las máquinas siendo monitoreadas y la computadora que ejecutó la aplicación a prueba.. Del uso de la función Status, se obtuvieron archivos de registro con toda la información de monitoreo desde que se empezó a utilizar la función hasta que ésta fue depurada. En estos archivos se aprecian los cambios que se llevaron a cabo con la implementación de esta función. Un ejemplo de estos archivos se presenta en el apéndice C.. 28.

(41) 29 Las funciones GetNext y Get no fueron tan utilizadas como la función Status, debido a que las dos primeras rutinas fueron diseñadas principalmente para ejecutarse a nivel Shell. Este tipo de diseño permite declarar variables e iniciaiizarlas al mismo tiempo, facilitando su implementación, pero adecuado sólo para una sola ejecución. En el caso específico de la aplicación siendo desarrollada, se necesitó poder ejecutar cada función más de una vez. Se tuvieron que hacer modificaciones a las rutinas para adecuarlas a la aplicación, pero fueron tantas las diferencias en el diseño, que fue necesario contactar al grupo de personas que diseñaron las rutinas para resolver el problema.. En la sección de alarmas, la función que más se utilizó durante la fase de pruebas fue Status, por el problema anteriormente mencionado. Para verificar el buen funcionamiento del sistema de alarmas, se utilizó el monitoreo automático a las máquinas académicas, principalmente. En un principio fue difícil saber si esta característica funcionaba correctamente, debido a que nunca fallaron estas máquinas durante su monitoreo. Si al empezar a monitorear estos equipos, alguno no estaba funcionando, la aplicación lo señalaba sin ningún problema. Pero durante el monitoreo, no se percibió ningún cambio en estas máquinas. Fue entonces cuando se empezaron a utilizar dispositivos más pequeños para su monitoreo automático (computadoras personales ejecutando software agente de SNMP) y poder simular su mal funcionamiento para verlo reflejado en la aplicación a prueba..

(42) CAPITULO 6 Conclusiones. La aplicación desarrollada puede utilizarse como una buena herramienta para la administración de redes heterogéneas. Debido a que el departamento de Redes de este campus no cuenta con una aplicación que permite monitorear dispositivos de tantas compañías distintas, el resultado de esta tesis puede, sin sustituir aquellas aplicaciones similares con las que cuenta ese. departamento,. complementar la tarea de administración y monitoreo detosdispositivos de redes.. De acuerdo a tos resultados obtenidos, se puede observar que esta aplicación todavía tiene un camino para desarrollo potencial. Aún y cuando tiene desarrollada toda una interíase de monitoreo y alarmas para dispositivos heterogénos, aspecto muy importante en la administración de redes en la actualidad, podría mejorarse incluyendo fases como ambientes gráficos y posibilidad de control de dispositivos. El mantenimiento de esta aplicación es simple gracias a la clara identificación de sus componentes, lo cual ofrece a su vez, una gran posibilidad para el desarrollo de tos nuevos aspectos antes mencionados.. El gran problema en el desarrollo e implementación de esta tesis fue el depender de las rutinas básicas de las funciones de SNMP, implementadas en la universidad de Carnegie Mellon. Sus diseños de las funciones fueron pensados para ser ejecutados una sola vez, lo cual limitaba enormemente la functonaiidad de una posible aplicación empleando estas funciones. Una de las funciones se 30.

(43) 31 logró adaptar sin ningún problema, pero las otras dos que se incluyeron en esta tesis no se adaptaron sino hasta después de muchos problemas. Fue necesaria la asesoría de la gente de Camegie Mellon para resolver el problema de incompatibilidad. Si en un principio se hubieran previsto estos problemas, tal vez hubiera sido mejor redefinir la tesis, para diseñar desde cero estas funciones, y no . depender de las rutinas de otra gente.. Debido a la posibilidad de empleo de esta tesis en el departamento de redes de este campus, así como en cursos académicos de esta área, una mejora de esta aplicación sería deseable. Esta mejora podría observarse como dos posibles tesis que lleven precisamente ésta a cabo. La primera podría encaminarse a implementar la función Set, con la cual se podría controlar y configurar cualquier dispositivo que se encuentre ejecutando bajo el protocolo de SNMP, y también, agregar el aspecto de acciones de respuesta a la función Trap. Así mismo, se podría incluir la facilidad de construir "macros" o conjunto de instrucciones y funciones para aumentar la facilidad de administración de redes. La segunda tesis podría encaminarse al desarrollo de un ambiente gráfico de la aplicación, y a la generación de gráficas en base a los archivos que ya genera la aplicación y en base a las funciones ya implementadas en la misma.. El diseño, implementación y desarrollo de esta aplicación cumplió con las expectativas de la gente que en ella intervino, pero no será sino hasta que se emplee con fines administrativos y académicos cuando se cumpla su verdadera finalidad: su uso como una herramienta para la administración de redes, que permita monitorear dispositivos bajo un mismo protocolo, sin importar de qué fabricante sea, y prevenir y detectar en lo posible, fallas en los dispositivos en red en este Instituto..

(44) APENDICES.

(45) 39. Apéndice A Conceptos. COMPONENTES. Un sistema administrados de redes contiene tres componentes:. * Diversos nodos administrados, cada uno conteniendo un agente. -Host System (Estación de trabajo, servidor de terminales) - Gateway System (Compuertas de comunicación) - Media device (Puentes, concentradores, multícanalizadores). * Cuando menos una Estación de Administración de la Red (NMS). - Protocolo de Administración de la Red. - Aplicaciones de Administración de la Red.. * Un protocolo de administración de la Red. Cada nodo administrado puede verse como si tuviera algunas "variables". Leyendo estas varíalbes, el nodo es monitoreado. Modificando esas varíalbes, el nodo es controlado. Otras operaciones: • Traversal: Permite a la estación administradora conocer las variables que soporta un nodo administrado. - Trap: Permite a un nodo siendo administrado reportar eventos extraordinarios a la estación administradora..

(46) 40 REPRESENTACION DE LOS DATOS. - ASN1 (Abstract Syntax Notation One) - BER (Basic Encoding Rules). Colección de descripciones de ASN1: Módulo. Un módulo puede importar o exportar definiciones a otro módulo.. Se definen tres tipos de objetos: - tipos. (define nuevas estructuras de datos). - valores. (instancias o variables de un tipo). - macros. (para modificar la gramática de ANS1). ASN1 utiliza cuatro tipos: - simples (enteros, string-octetos, identificador de objetos y nuil) - estructurados (estructuras y arrays) - etiquetados - subtipos. FUNCIONES BASICAS. Cuatro operaciones básicas se definen en este protocolo:. * get (utilizada para obtener información de administración) * get-next (utilizada administrativa.. para obtener,. por recorrido del MIB, información.

(47) 41 ° set (utilizada para manipular información administrativa) * trap (utilizada para reportar eventos extraordinarios). Comunidad: relación entre un agente SNMP y uno o más administradores SNMP.. PROTOCOLO.

(48) 42.

(49) 43.

(50) 44. Apéndice B Rutinas r Generated by Interface Builder ALARMA.HV #¡mport <objc/Objecth> © interface CopiaAlarrna:Object {. }. - activa3Method:sender; - activa2Method:sender; • activa1Method:sender; - sonido1Method:senden - copiarMetnod.sender; - activa4Method:sender; - son¡do2Metbod:sender; - inicializarMethod:sender; - detenerMethod.sender; @end.

(51) 45. r Generated by Interface Buiider ALARMA.MV #¡mport *CopiaAlarma.h' iimport "appWt/Form.h" «knport •appktt/Vtew.h" «knport 'appkit/Button.h' «inciude •string.h" «inciude •sya/time.h" «inciude 'stdto.h" //«inciude 'snmpstatus.c' int detenido = 1; extem char parametro{80]; extern char funcion[20]; int botón 1 = 0; int boton2 = 0; int boton3 = 0; int botorvt = 0; int libre 1 = 1; int Hbre2= 1; int Iibre3= 1; int libre* =1; char hostalarmal [20],r»stalarma2[20],hc«talarma3(20],hostalarma4[20]; Oimptementaüon CopiaAiarma - activa3Method:sender { FILE 'archivo; able para nombrar el archivo char respakJo{500]; //variables para manipulación de strings structtimevaltiempo 1; uctura para leer tiempo struct timezone tiempo2; time_tc; char'tiempo; extem char elhost(20]; able ya definida con el nombre del host gettimeofday(&tiempo1 ,&tiempo2); c = tiempo1.tv_sec; tiempo s ctime(&c); strcpy(respakJo,tiempo);. //vari. //estr. //vari.

(52) 46. If (detenido = 1) { H (boton3 » 0) { [reporteOutJet setStiingValué: 'Alarma 3 activada.U)*]; boton3= 1; strcat(respaklo,'Alarma 3 activada:"): strcat(respaldo,(char *) [aiarmaSOutlet stringValue]); strcat(respakJo,"\n\n"); archivctefopen('alarrnas.log","a+"); ^>uts{respaido^rchivo); fcJose(archivo); 8trcpy(hostalarma3,elhost); 8trcat(hostalarma3,V0*); } else a. { [alarma30utlet setStringVakje:"^*]; boton3 = 0; Iitxe3 = 1; [reporteOutJet setStringVaJue:"Alarma 3 desactivada. \0"]; strcat(respaldo,"AJarma 3 desactivada:"); strcat(respaldo,(char *) [alarma30utlet stringValue]); strcat(respaldo,'\n\n'); archrvo=fopen("alarmas.log,a+"); fputs(respakJo,arcriivo); fdose(archívo); } } etee {[activa30uttet setStaterO];} ,,. return self; }. - actrva2Method:sender { FILE 'archivo; abte para nombrar el archivo char respaldo[500]; //variables para manipulación de stríngs struct timeval tiempo 1; uctura para leer tiempo struct timezone tíempo2; time_tc; char'tiempo; extem char elhost[20];. //vari. //estr. //vari.

(53) 47 able ya definida con el nombre del host gettimeofday(&tiempo1 ,&tiempo2); c = tiempo 1 .tv_sec; tiempo = ctime{&c); strcpy(respaldo,tiempo); if (detenido ==1) { if (boton2 = 0) í [reporteOutiet setStringValué: 'Alarma 2 actívadaAO"]; boton2 = 1; strcat(respaido/Alarma 2 activada:"); strcat(respaldo,(char *) [alarma20utlet stringValue]); strcat(respakío,"\n\n"); archivo=fopen("aJarrras.kxjYa+'); fputs(respakJo .archivo); fclose(archivo); strcpy(hostalarma2,elhost); strcat(hostalarma2,\0"); a. }. else í [alarma20utlet setStringValue: V)"]; boton2 = 0; Iibre2-1; [reporteOutiet setStringValue.'Alarma 2 desactivada. V0"]; strcat(respaldo,"Alarma 2 desactivada:"); strcat(respaldo,(char *) [alarma20utlet stringValue]); strcatírespaldo.'vivV); ar{^rvc=fopen("alarrnas.tog","a+"); fputs(respaldo,archivo); fclose(archrvo); }. } else {[activa20utiet setState:0];} return self; }. - activa 1 Method:sender í FILE 'archivo;. //vari.

(54) 48 abie para nombrar el archivo char respaldo{500]; //variables para manipulación de siringa structtímevaltiempo 1; ucture para leer tiempo struct timezone tiempo2; timejc; char 'tiempo; extern char eJhost{20); abte ya definida con el nombre del host gettimeofday(&tiempo1 ,&tiempo2); c =tiempo1 .tv_sec; tiempo = ctime(&c); strcpy(respaldo,tiernpo); H (detenido = 1) { if (botón 1 = 0) { //if (!strcmp((cnar *)[alarma10uttet stringValue], V)")) //{[reporteOutiet setStringValue.'No hay instrucción a monitorear.VO"];. ID //else //{ [reporteOutiet setStringValue:"AJarma 1 activadaAO"]; botonl = 1; strcat(respaldo, 'Alarma 1 activada:"); strcat(respakJo,(char *) [alarmalOutlet stringValue]); strcat(respaldo, \n\n'); arcMvosfopen("alarrnas.logYa+"); fputs(respaldo^irchjvo); fclose(archrvo); strcpy(hostalarma 1 .elhost); strcat(hostalarma1 ,"V0"); a. //Ubrel = 0;. ID ) else { [alarmalOutlet setStringValue:"\0"]; botonl «0; Hbrel = 1; [reporteOutiet setStringValue:'Alarma 1 desactivada. \0"];. //estr. //vari.

(55) 49 strcaUrespakJo/Alarma 1 desactivada:"); strcat( respaldo, (char") [alarma lOutlet stringValue]); strcat(respaido, \n\n'); archivo=fopen(*alarmas.log","a+"); fputs(respaldo,archivo); fclose<archivo); <. }. } else {[activalOutiet setState:0];} retum setf;. 1 - sontdo1Method:sender {. retum setf; }. - copiarMethod:sender { char funcparam[80]; extem char parametro{80]; strcpy(funcparam,funcion); strcat(funcparam,' "); strcat(funcparam parámetro); if (librel = 1) [ [alar malOutlet setStringValuerfuncparam]; librel =0; } else { if (Iibre2 = 1) { [alar ma20utlet setStringValue:funcparam]; Iibre2 - 0; } else { ¡f(l¡txe3 = 1) { [alar ma30utlet setStringValueiuncparam]; Iibre3 = 0; } else í if(liore4 = 1) {.

(56) 50 [alar ma40utíet setStringValuerfuncparam]; Iibre4 = 0; } else. {. [reporteOutiet setStríngValue:"Ya existen cuatro alarmas activas. No se puede copiar otraAO"]; } } } } return seK; }. - activa4Method:sender {. FILE 'archivo; abie para nombrar el archivo char respaldo[500]; //variables para manipulación de strings structtfmevaltiempo 1; uctura para leer tiempo struct timezone tíempo2; t¡me_t c; char'tiempo; extern char elhost[20]; abie ya definida con el nombre del host gettimeofday(&tiempo1 ,&ttempo2); c = tiempo1.tv_sec; tiempo a ctkne(&c); strcpy(respeJdo,tiempo); ¡f (detenido = 1) { H (boton4 = 0) { [reporteOutiet setStringValue:'Alarma 4 activadaAO"]; boton4 = 1; strcat(respakJo, "Alarma 4 activada:"); strcat(respalclo(char *) [alarma40utiet stringValue]); strcat(respaJdo,'\n\n); anrf»lvo=fopen('aiamia8.log,"a+"); p. ,. ,. tputs(re8paido,archlvo);. //vari. //estr. //vari.

(57) 51 fcJose(archtvo); 8trcpy(hC5taJairna4,eihost); <. strcat(hO8talarma4, \0");. } else {. [aJarma40utlet setStringValué: ^0"]; boton4 = 0; libre* = 1; [reporteOutiet setStringValue:"Alarma 4 desactivada. V0"]; strcat(respaldo,"Alarma 4 desactivada:"); strcat(respaJcio,(char *) [alarma40utíet stringValue]); strcat{respakk),'\n\n"); archivoefoperKalarrnas.log","a-i-"); fputs(respaldo,archivo); fck>se<archivo); a. }. } else {Jactiva40uttet setState:0];} return seif;. ) - sonkk>2Methodsender { retum seif; } - intóalizarMethod:sender { if (detenido = 1) { [alarma lOutlet setStringValue:'VO"]; [alarma20utlet setStringValue:%0"]; [alarma30utiet setStringValue:"VO"]; [alarma40utlet setStringValue:"VO"]; [reporteOutiet setStr¡ngValue:"AJarmas desactivadas e inícializadas. V0"]; Hbrel = 1; Hbre2 = 1; Hbre3 = 1; Bbre4 = 1; [actrvalOutlet setStatefl]; [actfva20utlet setState.-O]; [activa30utiet setState*)]; [activa40utiet setStateü]; botonl =0; ,. ,.

(58) 52 botorúsO; boton3 * O; botoo4 = 0; } retum self; }. - det8nen\4ethod:sender {. FILE 'archivo; abie para nombrar el archivo char respaJdo{500]; //variables para manipulación de strings struct timevaJ tiempol; uctura para leer tiempo struct timezone tíempo2; timejc; char 'tiempo; char mensaje{400]; int nohay; char *argv[4]; abie para snmpgetnext extern char funcion[20]; abie que contiene nombre de función int ciciarstatus; int acumulador, extern int errorenstatua;. //vari. //estr. //vari //vari. getlirneofday(&tiempo1 ,&tiempo2); c = tiempol .tv_sec; tiempo = ctime(&c); strcpy(respaldo,tiernpo); a. strcpy(mensaje,Proceso de monitoreo activado. \n"); strcat(respakx),'Proceso de monitoreo activado. Vi"); if (botonl = 1) {strcat(rnensaJe,"AJarma 1 activada:\n"); strcat( respaldo, "Alarma 1 activada: *); strcat(respaldo,(cnar *) [alarmalOutlet stringValue]); strcat(respaldo,^n");} if (boton2 = 1) {strcat(mensaie,"Alarma 2 activada.Nn"); a. strcat(respaldo, Alarma 2. activada: •);.

(59) 53 strcat(respaldo,(char *) [alarrna20utlet stringValue]); strcatfrespeJdo,^");} if (botona =1) {strcat(mensaie,*Alarma 3 actrvadaAn'); strcat(respaldo,"Alarrna 3 activada:"); strcat(respaldo,(char ') [alarma30utiet stringValueD; strcaKrespakJo.'Nn");} if (boton4 = 1) {strcatfmerisaje/Alarrna 4 actjvadaAn"); a. strcat(respaldo, Alarma 4 activada:'); strcat(respaldo,(cnar *) [alarma40utiet StringValueD; strcat(reapaido. \n );} if ((boton1=0) && (boton2=0) && (boton3=0) && (boton4=0)) {strcpy(mensaje,No hay funciones activas para monttorear."); nohay» 1; [detenerOutfet setState:0]; a. a. a. 1 else {nohay = 0;} strcat(rnensaje,"VO^; If (detenido=1) í [reporteOutiet setStringValue:mensaje]; if (nohay = 0) { detenido a 0; [detenerOutiet sefTitie:Detener MonitoreoVO']; strcat(respaldo, \n ); archrvo=fopen("alarma8.log","a+"); fputs(respaldo,archivo); fctose(archivo); a. a. a. acumulador=0; ciclarstatus = 1; while (ciclarstatus — 1) {. K(boton1 = 1){ argv[0]=funcion; argv[1}=hostalarma1;. status(2,argv);.

(60) Esta página no está disponible Este mensaje se intercala en los documentos digitales donde el documento original en papel no contenía esta página por algún error de edición del documento. Al momento los creadores de este documento no han localizado esta página.. Preguntas frecuentes: ¿Qué puedo hacer? Ten por seguro que hemos informado al creador original del documento y estamos intentando reemplazar esta página. ¿Quién convierte estos documentos a formato digital? Esta tarea se realiza por un grupo de personas que laboran en el proyecto de Biblioteca Digital. Nos esforzamos por convertir documentos originales a una versión digital fidedigna y comunicar a los creadores del documento original de estos problemas para solucionarlos. Puedes contactarnos visitando nuestra página principal en: http://biblioteca.itesm.mx.

(61) 55 fputs(r68paJdoarchivo); fck>ae(archivo); ciciaretatus = 0; l. }. retum seif; }. Oend.

(62) 56. r Generatod by Interface BuHder EJECUTAFUNCION.HV fimport <obíc/ObiecLh> O interface EjecutaFuncton:Object {.

(63) 57 id id id id id. ip21_07Outtet; ip21_08Outtet; ip21_09OutJet; ip21_10Outtet; Ip21_110uttet;. - paramMethod:sender, - at_1 Methodrsenden - at_2Method:sender, - aL3Method:senden - interf_OMethod:senden - sys_1Method:sender, - sys_2Method:sender; • sys_3Method:sender; • sys_4Method:sender; - sys_5Method:sender; - sys_6Method:sender; - sys_7Method:sender; • interf_01Method:sender; • interf_02Method:senden - ¡nterf_03Method:senden - interf_04Method:senden • interf_05Method:sender; - interf_06Method:sender, - ¡nterf_07Method:sender, - kiterf_08Method:sender; • interf_09Method:sender; - interf_10Method:sender; - ¡nterf_11 Methodrsenden - interf_12Method:senden - interf_13Method:sender, - ¡nterfj4Metbod:senden - interf_15Method:senden - interf_16Method:sender, - interf_17Method:sender; - interf_18Method:senden • ¡nterf_19Method:sender, - interf_20Method:sender; - interf_21Method:senden - ip21_01Method:sender, - ip21_Q2Method:sender; - lp21_03Method:senden - ip21_04Method:sender, - ip21.05Method:senden.

(64) 58 - ip21 _06Method:sonder, - ip21_07Method:sender, - ip21 _08Method:sender, - ip21_09Method:sender. - ip21_10Method:senden -ip21_11Method:senden Oend.

(65) 59. r Generated by Interface Buüder EJECUTAFUNCION.M7 a. #import 'EjecutaFuncion.h «tmport "apptót/Form.h* firnport'appkit/Vtew.h' #inckide "stringJí" «inciude "sya/ttme.h" «inciude strJio.h «inciude "ansLh* «inciude 'snmpgetnextc' «inciude 'snmpstatus.c" a. a. char param2[80]; char parametrofjBO]; ©¡mptementatjon EJecutaFuncion - paramMethod:sender { FILE *archivo,*archivo2; able para nombrar el archivo. //vari. //variable para accesar el archivo: respaldo[180] extem char funckxi[20]; //vari able que contiene nombre de función char algo{80], respaldo[2000]; //variables para manipulación destringa struct timeval tJempol; //estr uctura para leer tiempo structtimezonetiempo2; timejc; char'tiempo; char *argv{4]; //vari able para anmpgetnext extem char elnost[20]; //vari able ya definida con el nombre del host char e)host2[20],respaJo^[80],respaldoant[80]; extem char param[5]; extem Int cualfnc; char compara[51; int bandera; //int lineas; //charres2; gettírr^fóay(&tiempo1 ,&tiempo2);.

(66) 60 c =tiempol.tv_sec; tiempo = ctime(&c); archivo=fopen("kxj.txt*,"a+"); //8trcat(tiempo \n'); frjuts("\n\n",archivo); tputs(tiempo,archJvo); a. >. strcpy(respakJo.funclon); strcpy(algo, (char *) [parametroOutJet stringValue]); //if (straTipÍparam/staNO*)) {strcpyíalgo.'patito'Jjy/modifícado el 30 ago a la 1:35 ESCRIBIR PATiTOIIInojala if (cualfnc = 2) {strcpy(algo,eiho8t);} //agr egado el 6 de sept a la 1:00 strcat(respaldo,algo); strcat(respakk>,' \n'); fputs(respakJo,archivo); fputsC\n",archlvo); ,. printf(*%s %8 %s %s\nparam,furK^,elrK>st,Daram2); (. 8trcpy(compara,'nex\0"); rjarKJera=strcmp(param .compara); if (bandera = 0) { printff entrando a getnext *); ////argv[0] = 'snmpgetnext2\0"; argv[0]=funck>n; strcpy(elhost2,elhost); strcat(eihost2."V0*); argv[1]=elhos12; argvpKpublicVO"; sticat(param2,V0); argv(3]=param2; getnext(4,argv); a. l>. ) 8trcpy(compara,*8ta\0"); bandera=strcmp(param .compara); if (bandera = 0) { printf(" entrando a status *); strcpy(parametro.elhost); {parametroOutlet setStríngValue.parametro]; argv(0]=funck>n:.

(67) 61 strcpy(elho6t2,elho8t); strcat(elhost2 V0'); argvf1]=elhost2; status(2,argv); a. l. }. strcpy(algo,respaido); strcpy(respeJdo,tiempo); strcat(respakk>,aJgo); strcat(respaldo,"\n"); if (bandera = 0) {aix^o2sfoperK snrnp3.doc",'r");} else {archive2=fopen(*snrnp2.doc *r*);} a. a. >. stn^(respalotoant,"inicializar>do...\n'); while (lfeof(archivo2)) { fgets(respaldo280,archivo2); if (respaldoant != respaldo^) { strcat(respakx),respakJo2); f. fputs(respaldo2,archivo); a. printf("Gnardo en archivo: %s,respaldo2); strcpy(respaldoantrespaldo2);. ) í fclose(archivo2); fclose(archivo); //strcpy(algo,respaldo); //strcpy(respaldo,tiernpo); //strcat(respaldo,algo); //strcat(respaldo,"\n*); //strcat(respaldo,respaldo2); [respuestaOutlet setStringValue:respaJdo]; [respuestaOutiet display]; retum seif; }. - at_1Method:sender {.

(68) 62 char param[80]; extern char eftost[20]; extern char perametro{80]; strcpy(pexam2/aLafTable^tEntry.atiflndex.O*); strcpy(param,eJhost); strcat(param,' pubic atatTabie JrtEntty.attflndex.0*); (pammetroOutiet setStringValue:param]; strcpy (pararnetro4>ararn); retum seif; }. - at_2Method:sender {. charparam[80]; extem char elhost(20]; extern char parametro{80]; strcpy(param2,'aLatTabJe.atEntry.atPhysAddress.O*); strcpy(param,e<host); strcat(param," pubüc aLatTabte.atEntry.atPhysAddress.O'); [parametroOutlet setStringVaiue:param]; strcpy(parametro,param); retum seif: } - at_3Method:sender. í char param[80]; extem char eihost{20}; extem char parametro{80]; strcpy (param2,*aLatTabte.atEntry.atNetAddress.0"); strcpy(p^ram.eihost); strcat(param, pubüc aLatTabte.atEntry.atNetAcidress.O"); (paiametroOutlet setStríngValuerparam]; strcpy(parametro,pararn); a. retum seif; }. - interf_OMethod:sender { ch¿rpeiam[80];.

(69) 63 extem char eihost(20]; extem char parametro{80]; strcpy(p^ram2/interfaces.rfNumber.O"); strcpy(param,e)host); strcat(param," pubUc inteffaces.tfNumbef.O"); [parametroOutiet setStringValuerparam]; strcpy(parametro,param); retumself; }. - interf_01Method:sender { char param[80]; extem char elhost(20J; extem char parametro{80]; strcpy(pararn2/lnterfaces.ifTar^.^ strcpy(param,elhost); strcat(param,' puWic •nteffaces.ifTable.ifEntry.iflrKíex.O"); [parametroOutiet setStringValue:param]; strcpy(parametro4)aram); retumself; }. - interf_02Method:sender { char param[80]; extem char elhost[20]; extem char parametro[80]; strcpy(pararn2,"interfaces.rfTabte^Entry.ifDescr.O*); strcpy(param,elhost); strcat(param," public interfeices.ífTable.ifEntry.ifDescr.O ); [parametroOutiet setStringValue:param]; strcoy(parametro,param); a. return setf; }. - interf_03Method:sender { char param[80]; extem char elhost[20]; extem char parametro[80];.

(70) 64. strcpy(param2,"inteffaces.ifTabte.ifEntry.ifType.O"); strcpy(param,eihost); strcat(param,' pubtic ¡nterfaces.rtTabJe.ifEntry.ifType.O'); [parametroOuttet setStringValue:param]; strcpy(parametro,param); retumself; }. - lnterf_04Method:sender {. char param{80]; extern char eJhosJ(20J; extern char parametro{80]; strcpy{param2,'interfac8S.ifTabte.rfEntry.ifMtu.O"); strcpy(param,eihost); strcat(param," pubtic interfaces.ifTable.ffEntry.ifMtu.O"); [parametroOutiet setStringValuerparam]; strcpy (parametroparam); returnself; }. • interf_05Method:sender { char param[80]; extern char ettx>st(20]; extem char parametro{80]; strcpy(pararr^/lnterfaces.ifrabte.ifEntry.ifSpeed.O'); strcpy(param,elhost); strcat(param, pubHc kiterfaces.ifTable.if Entry.ifSpeed.O*); [parametroOutiet setStringValuerparam]; strcpy(parámetro .param); a. return setf; }. - interf_06Method:sender { char param[80]; extem char eihost(20]; extem char parametro{80];.

(71) 65 strcpy(parain2/interfaces.^ strcpy(param,elhost); strcat(param,* public intarfa<^.^al)le.ifEntry.tfPhy8Ao\lress.O"); [parametroOutlet setStringValue:param]; strcpy(rjarametro¿>aram); return seif; }. - interf_07Method:sender { char param[80]; extern char eihost[20]; extem char parametro[80]; strcpy(rMrain2/interfaces.ifTa^ strcpy(param,elho$t); strcat(param,' public interfaces.ifTable .ifEntry.ifAdminStatus.0'); [parametroOutlet setStringValue:param]; strcpy(parametro,param); return seif; }. - interfjOBMethod:sender { char param{80]; extem char elhost[20]; extem char parametro[80]; strcpy(pararr¿,"interfaces.rfTabte.ifEntiyjfOp^ strcpy(param,elhost); strcat(param," public ¡nterfaces.irrable.ifEntry.ífOperStatus.O'); [parametroOutlet setStringValue:param]; strcpy(parametro,param); retum seif; } - interf_09Method:sender { char param[80]; extem char eihost[20]; extem char parametro[80]; strcpy(r^ram2/¡nterfaces.rfTar^.

(72) 66 strcpy (param.eihost); strcat(param,' pubüc inter{a<^.ifTaJ^.ifEntiy.lfLastChange.O*); [parametroOutlet setStringvalue.param]; strcpy(parametro,param); retum seif; }. - interf_10Method:sender { char param[80]; extem char eihost[20]; extem char parametro[80]; stit^(rxiram2/interfaces.ifTable.ifEntryJfl strcpy(param.eihost); strcat(param," public interfaces.fTabte.ifEntry.IflnOctets.O'); [parametroOutlet setStringValue.param]; strcpy (parametrcparam); retum seif; }. - interf_11Method:sender { char param[80]; extem char eihost[20]; extem char parametro[80]; strcpy (param2,"lnterfa(^.itTabte.iCntjyJflnNUcastPkts.O*); strcpy(param.eihost); strcat(param," public interfaces.KTable.ifEntry.iflnNUcastPkts.O"); [parametroOutlet setStringValue:param]; strcpy(parametro,param); retum seif; } - interf_12Method:sender { char param[80]; extem char elhost[20]; extem char parametro[80]; strcpy(r>aram2,°interfáces.if^^ strcpy(param.eihost);.

(73) 67 a. strcat(param," public interfax^.ifTable.ifEntry.iflnDiscards.O); [parametroOutlet setStringValue:param]; strcpy(parametro,param); return seif; }. - interf_ 13Method: sender { char param[80]; extem char elhost(20]; extem char pararnetro[80]; strcpy(paranté,*»nterfa<^.rfT^ strcpy(param,eJhost); strcat(param," public interfaces.ifTable.ifEntry.rflnErrors.0"); [parametroOutlet setStringValue:param]; strcpy(parametro,param); retum seif; } - kiterf_14Method:sender { char param[80]; extem char eihost(20]; extem char parametro[80]; st«^y(rwarn2/interfaces.ifTable.^^ strcpy(param,elhost); strcat(param,' public lnterfaces.^fTabte.ifEntIyJlnUnknownProtos.O•); [parametroOutlet setStríngValue:param]; strcpy(parametro,param); retum seif; }. • interf_15Method:sender { char param[80]; extem char elhost[20]; extem char parametro[80]; str(^(rjararn2/interfaces.ifTabie.¡fEntryJfOutOctete strcpy(param,elhost); strcat(param,* public interfa(^.ifTable.ifEntry.ifOutOctets.O*);.

(74) 68 [parametroOutlet setStringValue:param]; strcpy(parametro,param); return seif; }. - interf_16Method:sender { char param[80]; extem char ethost[20]; extem char parametro{80]; a. strcpy(param2,interface8.ifTab^^ strcpy(param.eihost); strcat(param,' public interfaces.ifTaiite.ifEntry.ifOutUcastPkts.O"); [parametroOutlet setStringValue:param]; strcpy(parametro.param); return seif; }. - interf_17Method:sender { char param[80]; extem char elhost[20]; extem char parametro[80]; strcpy(rjaram2,"interfacesJfTabteJ strcpy(param,elhost); strcat(param,* public interfaces.ifTable.ifEntry.ifOutNUcastPkts.0"); [parametroOutlet setStringValue.param]; strcpy(parametrojjaram); retum seif; í - interf_18Method:sender { char param[80]; extem char elhost(20]; extem char parametro[80]; strcpy(param2/interfacesJtTabieJfEntryJfOut strcpy(param.eihost); strcat(param," public Interfaces.ifTable.ifEntry.ifOutDiscards.O"); [parametroOutlet setStringValue:param]; strcpy(parametro,param);.

(75) 69. retum seif; }. - kiterf_ 1 QMethod: sender { char param[80]; extem char eihos1(20]; extem char parametro{80]; strcpy(param2/int6ffaces.lfTa^ strcpy(paramelhost); strcat(param," public interfaces.ifTabie.ifEntry.ifOutErrors.0'); [parametroOutlet setStringValue:param]; strcrjy(parametro,param); >. retum seif; }. - interf_20Method:sender { char param[80J; extem char elhost[20]; extem char parametro[80]; sfrcpy(param2/lnten%cesJfTa^ strcpy(param,elhost); strcat(param,* public Interfaces.ifTable.ifEntry.ifOutQIen.O'); [parametroOutlet setStringValue:param]; strcpy(parametro,param); retum seif; }. - kiterf_21Method:sender { char param[80]; extem char elhost(20]; extem char parametro[80]; strcpy(pararn2/interfaces.lfrab^ strcpy(param,elhost); strcat(param," public Interfaces.HTable.rfEntry.lfSpecific.O"); iparametroOutlet setStringValue.param]; strcpy(parametro4>aram);.

(76) 70 return seif; }. • sys_1 Method:sender {. char param[80]; extem char elhost[20]; extem char parametro{80]; strcpy(pararn2/system.sysDescr.O*); strcpy(param.eihost); strcat(param,' public system.sysOescr.O"); [parametroOutlet setStríngValue:param]; strcpy (parametro,param); return seif; }. - sys_2Method:sender { char param[80]; extem char elhost[20]; extem char parametro{80]; strcpy (pararrtf.'system.sysObjectiD.O"); strcpy (param.eihost); strcat(param,' public system.sysObjectlD.O'); IparametroOutlet setStringValue:param]; strcpy (parametroparam); retum seif; } - sys_3Method:sender { char param[80]; extem char elhost[20]; extem char parametro{80]; a. strcpy(param2/system.sysUpTtrra.0 ); strcpy(param,elhost); strcat(param,' public system.sysUpTime.O"); IparametroOutlet setStríngValue:param]; strcpy (parametrojjaram); retum seif;.

(77) 71 í - sys_4Method:8endef { char param[80]; extem char elhost[20]; extem char parametro{80]; strcpy(pa/am2,"system.sy8Contact O"); strcpy(param.eihost); strcat(param,° pubüc system.sysContact.O"); [parametroOutlet setStringValue:param]; strcpy(parametro,param); retum seif; } - sys_5Method:sender { char param[80]; extem char elhost(20]; extem char parametro[80]; strcpy(param2,"system.sysName.O"); strcpy(param.eihost); strcat(param,* public system.sysName.O"); [parametroOutlet setStringValue:param]; strcpy(parámetro .param); return seif; } - sys_6Method:sender { char param[80]; extem char eihost[20]; extem char parametro[80]; strcpy(param2,"system.sysLocation.O"); strcpy(param.elhost); strcat(param,* public system.sysLocation.O"); [parametroOutlet setStringValuerparam); strcpy (parametro,param); retum seif; }.

(78) 72 - sys_7Method:sender { char param[80]; extem char eihostl20]; extem char parametro(80]; strcpy(param2,'8ystem.8ysServtee8.0"); strcpy(param,elho8t); strcat(param," public system.sysServioes.0*); [parametroOutlet setStringVaiue:param]; strcpy(pa/ametro,param); return seif; }. - ip21_01Method:sender { char param[80]; extern char elhost[20]; extem char parametro[80]; strcpy(pararri2,"ip.ipRoutingTaD^^ strcpy(param,elhost); strcat(param," public Ip.ipRoutingTabie.ipñouteEntry.ipRouteOest.O'); [parametroOutlet setStríngValue:param]; strcpy(parametro^aram); return seif; }. • ip21_02MethorJ:sender { char param[80]; extem char elhost[20]; extem char parametro[80]; strcpy(rjararr£;ip.ipRoutk)gTab4e.ipRouteEntry.ip^ strcpy(param,elhost); strcat(param," public ip.ipFtoutingTabte .ipRouteEntry.ipRouteiflndex.O"); [parametroOutlet setStríngValue:param]; strcpyGoarametrojaaram); return seif; }. - ip21_03Method:sender.

(79) 73 {. char param[80]¡ extem char elhostf20]; extem char parametro{80]; strc^(param2,"ip.ipRcHJt¡ngTable.fc strcpy (param.eihost); 8trcat(param,' public ip.ipRoutíngTable.ipRouteEntry.ipRouteMetric1.0"); [parametroOutlet setStringValue:param]; strcpy (parametro,param); retum seif; } • ip21_04Method:sender í char param[80]; extem char elhostf.20]; extem char parametro[80]; strcpy(param2."ip.ipRcHJtir^Table.ipRouteEntry.ip^ strcpy (param.eihost); strcat(param," public ip.ipRout¡ngTabte.ipPKXJteEntry.ipRcHJteMetrká2.0"); [parametroOutlet setStringValue:param]; strcpy (parámetro j>aram); retum seif; }. - ip21_05Method:sender { char param[80]; extem char elhost[20]; extem char parametro[80]; strcpy(param2,"ip.lpRc^t¡ngTab^^ strcpy (param.eihost); strcat(param,' public ipJpRoutingTable.ipRouteEntry.ipRouteMetric3.0"); [parametroOutlet setStringValue:param]; strcpy (parametro,param); retum seif; } - ¡p21 _06Method:sender { char param[80];.

(80) 74 extem char elhost[20]; extem char parametro{80]; 3trcpy(pararr^,'ip.ipFkxitingTai)te.ipRcHiteEntjy strcpy(param,eihost); strcatíparam," public ip.ípFkxrttogTabte.ipRouteEnty [parametroOutlet setStringValue:param]; stJcpy(parametro,param); retum setf; } - ip21_07Method:sender { char param[80]; extem char eíhost[20]; extem char parametro[80]; strcrjy(rjararr£/ip.ipRc<jti^ strcpy(param,elhost); strcat(param," public ip.ipñoutingTar^JpRouteEntry.ipRouteNextHop.0"); [parametroOutiet setStringValuerparam]; strcpy(parametro4>aram); return seif; }. - ip21 _08Method :sender { char param[80]; extem char elhost[20]; extem char parametro[80]; strcpy(Dararn2/ip.ipRoutingTaDte.ipRouteEntryJpRouteT strcpy(paramelhost); strcat(param," public ip JpRoutingTableJpFtouteEntry.ipRouteType.O"); [parametroOutlet setStríngValue:param]; strcpy(parametro4>aram); l. return seif; } - ip21 _09Method :sender { char param[80J; extem char elhost[20];.

(81) 75 extem char parametro{80]; strcpy (parairtf/ip.ipRcKJtir^^ strcpy(param.eihost); strcat(param," pubüc ip.ipRciJtingTabieJpr^tBEntry.ipRc4JteProto.O*); {parametroOutlet setStringValuerparam]; strcpy(parámetro .param); retum seif; }. - ip21_10Method:sender { char param[80]; extem char elhost[20]; extem char parametro{80]; a. strcpy(pararn2,ip.ipRc4JtingTable.ipRouteEnty^ strcpy(param,elhost); strcat(param, public ip.ipRoutingTable.ipRouteEntry.ipRouteAge.O*); [parametroOutlet setStringValue:param]; strcpy(parametro,param); a. return seif; }. - ¡p21_11Method:sender { char param[80]; extem char elhost[20]; extem char parametro[80]; a. strcpy(pararn2,ip.ipRoutingTable.ipRouteEntryJpRouteMask strcpy(param,elhost); strcat(param," public ip.ipRoutingTabte.ipRouteEntry.lpRouteMask.0*); [parametroOutlet setStringValue:param]; strcpy(parametro,param); return seif; }. ©end.

(82) 76 r Generated by Interface Buikjer EJECUTAGETNEXT.H*/ #import <oc^c/Objecth> O Interface EjecutaGetNext:Object { id getnextOutlet; id dgetnextOutiet; }. - dgetrrextMethod:sender; O end. r Generated by Interface Builder EJECUTAGETNEXT.MV #import "EjecutaGetNexLh" timport "appkit/View.h* #import 'appkit/Form.h' #import "string.h" extem char param[5]; extem int cuatínc; ©imptementation EjecutaGetNext - dgetnextMethod:sender { extem char funcion[20]; strcrjy(furtfOT,"snmpgetnext \0"); strcpy(param,"nex\0"); cualfnc = 1; [dgetnextOutiet setStringValue.'Para cada variable en la operación, se recibirán los valores correspondientes o en su defecto, se recibirá el error noSuchName por cada uno que no se encuentre. Uso: snmpgetnext gateway-name community-name object-identifier [object-identifier...] VO"]; return seif; }. ©end.

Figure

TABLA DE CONTENIDO
Tabla 1.1 Evolución de protocolos de monitoreo.
Figura 1.1. Capas de SNMP.
Figura 1.2. Relación entre el Administrador, SNMP y objetos administrados.
+7

Referencias

Documento similar

Tutorías Las tutorías virtuales y presenciales tienen varias funciones: resolución de dudas relativas a tareas concretas, procedimientos y estrategias de éxito para el proceso

The objective of this work is to study the influence of the chemisorption and desorption temperature and the number of activation cycles in the development of porosity during

Tanto la cerámica de superficie de la tumba como la del anterior se pueden fe- char perfectamente dentro del siglo I V d. C , fecha que coincide perfectamente con el fragmento

Análogamente al carbón [10], el char-N se produjo probablemente como resultado de las reacciones de condensación de los grupos amino (aminoácidos y proteínas)

Los resultados mencionados parecen respaldar la idea de que la tasa de reacción de char (oxidación y reducción) en un quemador de alimentación inferior y con reparto de aire

Reconfortados pela abordagem da metáfora na perspetiva de Nanine Char- bonnel e de Daniel Hameline podemos agora perceber melhor os regimes semân- ticos, nomeadamente

b) Emisión de informe sobre la adecuación entre las competencias y conocimientos adquiridos de acuerdo con el plan de estudios del título de origen, o la experiencia laboral

CG8 - Planificación, proyecto, dirección, ejecución, y gestión de procesos de medida, sistemas de información, explotación de imágenes, posicionamiento y navegación;