domingo, 20 de septiembre de 2015

Inventario de Activos SW/HW automatizado (con netbeans)

Hola amigos(as)  


Felices Fiestas Patrias  a todos :) hay que empezar a bajar la guatita y comer todos los días una manzana para purificar los 35 billones de células que tenemos. :)



En este artículo explicaré cómo desarrollar un inventario de los activos (computadores con sistema operativo Windows) de tu organización. La norma ISO 27002 [1] indica que el objetivo principal de la gestión de Activos es alcanzar y mantener una protección adecuada de los activos de la Organización.  Todos los activos deberían ser justificados, caracterizados, registrados y tener asignado un propietario. 

Lo que hice en la empresa, y así evitar que mi presupuesto de inversión lo pueda derivar a comprar un software de inventario o una asesoría de consultores, (no se enojen, los consultores) fue diseñar un aplicativo que me permitió lo siguiente: 

-Realizar un inventario de todos los computadores, a través de un proceso automático, como tarea programada o generarlo cuando uno lo desee.

-Cuantificar en línea los programas que tienes en cada computador y así validar que usuarios porfiaditos han instalado programas no deseados o sin licencia.  Evitar problemas con ADS .


-Disponer en línea, la historia de los programas en cada computador y validar con los datos históricos versus el actual.  Ejemplo: El computador de la encarga de Inteligencia de negocio, el mes pasado contaba con 10 software y ahora tiene 15. Puedes cotejar los datos contra las facturas de compra de licenciamiento.

-Disponer de las características del Hardware. Mira lo que puedes obtener:


-Obtener información del computador; nombre del equipo, descripción, pack, tipo arquitectura  y versión del sistema operativo.

-Obtener los recursos de la red; dirección IP, descripción del DNS, dominio, usuario, etc.

-Obtener información básica de los discos duros

-Obtener información básica de las impresoras instaladas y otros dispositivos.

-Obtener los procesos actuales que se están ejecutando en el computador.

-Obtener los servicios actuales que se están ejecutando en el computador.

-Puedes también iniciar, pausa, terminar un proceso o servicio.

-Y otras características de información, por ejemplo en la tabla 1,se tiene la salida de inventario del programa agente de Mcafee (antivirus) detectado en mi computador. Observa todo lo que puedes obtener. Además puedes parametrizar si deseas toda la información o acotar por un tipo en particular. 

Tabla 1: Salida de inventario de un programa en particular




Servicio Monitoreo de activos HW /SW

Lo puedes diseñar en Eclipse, NetBeans, Visual Studio .net, o lo que te más te acomode.

En mi caso, lo realicé con NetBeans [2]  (obvio, Java)


Receta:


-Instalar NetBeans IDE con Tomcat

-Instalar base de datos Mysql [3]
-Instalar conector JDBC de mysql [4]
-Wmic (Instrumental de administración de Windows) [5],  Es una aplicación de Microsoft que para nuestro caso nos permite obtener las características de un computador.

Para que lo puedas entender, ejecuta el comando cmd y luego digita lo siguiente:



El comando WMIC[5] se le ha enviado los argumentos "CPU"  y  get, Esto permite obtener el nombre o descripción de la Cpu, es decir con "name". 


1. Vista despliegue

Figura 1

En la figura 1, se tiene que en el computador A (servidor) empieza a establecer una conexión con todos los computadores (computador B). Para ello, se debe contar con una base de datos de las IP o nombres de los computadores residentes en A (base datos Mysql)

En cada computador (B) debes instalar el programa de java que permita realizar el inventario SW/HW. Dejar el programa corriendo siempre en segundo plano.


2. Diseño del Sistema

Crear un modelo de datos relacional, por ejemplo, veamos este bien sencillo, figura 2. En la tabla host tenemos las IP o identificación del host. En la tabla tipo_monitoreo se registra los tipos de inventarios que deseamos realizar. Por ejemplo, inventario de la CPU, Sistema Operativo, Productos Sofware, etc. En la tabla atributo_monitoreo, se tiene el detalle del inventario a realizar de los tipos de monitoreo. Ejemplo: Inventario de la CPU, pero que deseo inventariar, todo o algo en específico?
La tabla movimiento registra el inventario.



Figura 2: Modelo de datos relacional

Los datos quedan de la siguiente manera:  


Figura 3: datos insertados en las tablas del modelo de la figura 2



3. Aplicación Cliente/Servidor instalada en los computadores a inventariar 

En este caso me guíe por la vista de la figura 4 para diseñar el sistema "prototipo inicial". Donde el "Server" estará residente en los computadores de los usuarios y el "Client" debe estar en tu servidor.  (como raro esto aaa!!!)


Figura 4: vista de clases [6] 

4. Programación 

Se crean tres clases para el sistema residente en los computadores de los usuarios.


La clase Conexion permite comunicarse con el gestor de base de datos Mysql. 

La clase Monitoreo permite  realizar el inventario de todos los computadores.

La clase Movimiento permite  almacenar el inventario.




La clase CargaVmic permite comunicarse con el módulo WMIC de microsoft.

La clase MisDatos permite  ejecutar el inventario y llama al método correspondiente de la clase Cargavmic.


Baja aquí el código fuente.  Si tienes dudas del código, escríbeme y te ayudo.

En la figura 5, se presenta la salida de consola que genera el prototipo. Esto permite validar el plan de prueba (unitaria e integral)


Figura 5: salida del sistema


Figura  6: Salida del inventario y registrada en Mysql

En la figura 6, se obtiene que el computador con identificador en "host_id", su CPU se caracteriza como "Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz"

Con los datos almacenados puedes listar los movimientos y gestionar tus activos. Esto a través de una aplicación WEB usando Tomcat.

Información Adicional

La intención de este artículo es que puedas hacer tu propio sistema de inventario de activos SW y HW. Conocer el comando WMIC de microsoft.  Lo presentado esta simplificado ya que he dejado varios detalle fuera. Por ejemplo explicar el código fuentes, pero bájalo y si hay duda me avisas.  Esto no queda acá ya que estoy investigando migrar este sistema a un servicio web del tipo RESTful y así tener información de los equipos por medio de tu equipo móvil (android o IOS)

Nos vemos :)

Biografía

[1]  http://www.iso27000.es/download/ControlesISO27002-2005.pdf

[2]  https://netbeans.org/

[3]  http://www.mysql.com/downloads/

[4]  https://www.mysql.com/products/connector/

[5] https://msdn.microsoft.com/en-us/library/aa394531(v=vs.85).aspx
      https://norfipc.com/comandos/informacion-pc-uso-wmic.html

[6] https://netbeans.org/community/articles/interviews/java-se-training-report.html









lunes, 14 de septiembre de 2015

Construcción de un ETL para la SEC

Hola a todos,  les dejo un breve trabajo que permite reunir información de distintas fuentes de datos con el fin de extraerla, transformarla y usarla para un objetivo en particular. En este caso, en la empresa de Energía que me desempeño, todos los meses se debe enviar información a la SEC (Superintendencia de Electricidad y Combustible) a través de la plataforma STAR y subir archivos de texto.  Les debo el trabajo de inventario de activo... aún no lo termino, está quedando bakan. creo...

Para este tema, utilicé el producto de Pentaho Open BI Suite. (herramienta Kettle, componente Spoon). Cero costo :) y un poco de investigación .. café y barras de quaker...

La arquitectura forma un proceso centralizado bajo un marco de trabajo orientado a la solución de problemas, empleando componentes de Inteligencia de Negocio (BI) 

Modelo conceptual  Kettle


Spoon te permite diseñar de forma gráfica la transformación ETL  (Extracción, Transformación y Carga)

Spoon incluye un entorno gráfico de desarrollo, basado en dos tipos de objetos:      
      -Transformación (colección de pasos en un proceso ETL) 
-Trabajos (colección de transformaciones)

Los procesos ETL son responsables de extraer, de transformar y de cargar datos.

-Permite crear transformaciones y trabajos que pueden hacer procesos lote/batch.
-Su interfaz gráfica permite visualizar todo el flujo de la información.
-Posee  una  gran  cantidad  de  fuentes  de  origen  y  destinos  de  almacenamiento  de información.
-Fácil de instalar y manejar, buen soporte Internet y local.
-Puede ser instalado en varios ambientes.


Ejemplo de un ETL

El siguiente ejemplo es uno de los más sencillo, la idea es entender el concepto de este trabajo y no explicar en detalle. Otro día. ;) más café y barras de Quaker.

Proveedores
·         Objetivo del ETL : Carga los datos de los proveedores que rompen las cañerías (sin ofender a nadie)
·         Nombre transformación: Proveedores
·         Periodicidad: Mensual
·         Modalidad de extracción: Total

Figura 2 : Componentes del ETL

Componentes del ETL
Nombre del paso : Get data from XML
Objetivo :Permite obtener los datos del origen desde un archivo XML. En este caso los proveedores residen en este medio.
Ubicación : D:\XMLProveedores.xml  (unidad de red)

Modalidad de extracción/transformación

Nombre campo
Xpath
Element
Result type
Type
Id_psa1000
Id_psa1000
Node
Value of
Integer
Razon1
Razon1
Node
Value of
String

Nombre del paso: Select values
Objetivo :Permite seleccionar registros o campos necesarios que serán utilizado en el destino.

Nombre del paso: Execute SQL script
Objetivo : Permite borrar los datos del destino, tabla proveedor de la base de datos Postgres antes de ser cargada por los datos del origen.
Conexión : DestPostgres

Modalidad de extracción/transformación


Nombre del paso: Dimensión Proveedor - Destino (table output)
Objetivo :Permite insertar los datos que provienen del origen D:\XMLProveedores.xml , hacia la tabla proveedor en el destino.
Conexión : DestPostgres

Mapeo de fuentes a Destino

Destino
Columna
Destino
Tipo

Tipo
Dato
Largo
Origen
Columna
origen
Tipo
dato
Largo
Tipo
Proveedor
id_provee
PK
Varchar
12
D:\XMLProveedores.xml
Id_psa1000
integer
7

proveedor
Desc_prove

varchar
100
D:\XMLProveedores.xml
Razon1
Varchar
100




Ejecución de la transformación
Se ha cargado con la transformación ETL siguiente:

Transformación
Archivo Origen
Tabla Destino Base dato Postgres
Archivo
Dimensión proveedor
D:\XMLProveedores.xml
Proveedor
ETLProveedor.ktr


Figura 3: Captura de la salida


Al tener los datos en las tablas correspondientes, se genera otro proceso que permite pasarlo a un archivo de texto y listo.


En la figura 4, en la capa de integración se utilizaron varios tipos de fuentes origen  y en el destino un repositorio de archivos de texto que posteriormente son subidos a la plataforma Star de la SEC


Figura 4:Capa de Integración


Resumen

En este tema se visualizan las etapas de diseño; obtención de los datos operacionales, luego generar los respectivos ETL’s (extracción, transformación y carga) hacia la base de datos destino como un "Stage" pero finalmente dejar la salida final en archivos de textos según los parámetros solicitados por la SEC.  Todo este conjunto de ETL se asocian a un JOB que te permite establecer una tarea programada o manual.

En una sola versión de todos los recursos de información, que es uno de los más grandes desafíos para las organizaciones hoy en día. Pentaho Data Integration permite un poderoso ETL (Extracción, Transformación y Carga).

Espero que les sirva.. dudas o más detalle de este trabajo, escribir a lpizarrofx@gmail.com

























viernes, 4 de septiembre de 2015

Interpretación de Mediciones de Resistividad de Terreno por medio de Curva Patrón

Hola estimados, hoy les dejo un artículo muy importante para nuestros Ingenieros eléctricos, e instaladores eléctricos certificados en la SEC, donde las Tecnologías de Información son necesarias y aportan un valor agregado a las personas.

Este trabajo de investigación que realice propone que al calcular la resistividad de un terreno de hasta cuatro capas, de acuerdo al método Curva Patrón,  se demuestra minimizar el error de ajuste por medio de la función de error medio cuadrático porcentual. Mediante la comparación de los resultados entre la curva de campo y teórica, se demostró que la función error medio cuadrático porcentual, algoritmos propios diseñados, más las curva de patrón, se ajustan al set de curvas de patrón de Orellana & Mooney, 


La resistividad del terreno es de importancia decisiva en el diseño de un Sistema Puesta a Tierra (SPAT) y la única forma de conocerla con exactitud es mediante medidas directas de campo. 


Figura 1:Terreno formado por 4 estratos 
Figura 2: Resistencia Puesta a Tierra.

La metodología actual, que es muy utilizada en CHILE, de interpretación mediante curvas patrón presenta algunos inconvenientes que implica la observación gráfica para seleccionar correctamente la curva apropiada. Veamos por medio de el siguiente Diagrama de Causa/ Efecto (Ishikawa) la definición del problema:


Diagrama de Causa/ Efecto (Ishikawa)


En la figura 3 se distinguen las piezas principales que permiten resolver y contar con un proceso adecuado de interpretación mediante curva de patrón. Se identifica la toma de datos del Terreno, como información a ser consumida o transformada por el proceso. Para controlar o regular el proceso, se incorporan tres componentes importantes de control, el primero las tablas de datos que conforman las curvas de patrón, en segundo lugar la clasificación de las curvas y en tercer lugar, el ajuste de curvas. Estos controles permiten que la salida de información del proceso tenga un alto resultado de éxito. La salida se considera como información producida por el proceso, entregando como resultado el calce de las curvas de campo o terreno con las curvas patrón.  Como mecanismo de llevar a cabo todo el proceso, es necesario contar con un computador y sus software apropiados.

Figura 3: esquema resumido 
Metodología IDEF0. http://www.idef.com/idef0.htm


En la figura 4, se obtiene el resultado final en la recolección de datos y procesados en los software investigados IPI2WIN, WINSEV y el método manual de Curva patrón de Orellana & Mooney.


Figura 4: Curva campo y teórica ajustada


En la figura 5, se observa el resultado del sistema desarrollado. Se tiene que la curva que más se ajusta por superposición visual y por ajuste por medio de la ecuación de error medio cuadrático porcentual es la curva K-14/10. La curva de campo se identifica con color rojo y la curva teórica con menor ajuste con color amarillo. 


Figura 5: Curva Campo y Patrón K-14/10. 


Los resultados experimentales se presentan en la siguiente Tabla.

Tabla 1. Resultados experimentales
SI: semi espacio infinito.


Se observa de la Tabla 1 que el resultado de p1 y e1 respectivamente del software  Ipi2Win, que el método Curva Patrón y sistema desarrollado, no hay diferencias  mayormente, presentando un tipo de suelo o estructura con resistividad aparente similar. 

Este resultado se infiere que el sistema desarrollado es satisfactorio debido a que visualmente la curva de campo con la curva patrón coinciden y el valor de error de ajuste es inferior al 2% demostrado por la ecuación (1,1). Para llegar a un 0,152% se debe interpolar con mayor precisión la curva de campo.

Ecuación (1,1)

Los métodos de interpretación investigados corresponden a resultados diferentes respecto a la resistividad aparente y espesores, debido a que cada uno utiliza técnicas de métodos cuantitativos de interpretación diferentes (ver tabla 1). En la experimentación del sistema desarrollado también se presentan variaciones de información con respecto al espesor y resistividad. Según los datos obtenidos en esta investigación, los cálculos de resistividad aparente se basan de acuerdo a la metodología Schulumberger y de Orellana & Mooney determinando la resistividad aparente medida y graficando la curva de campo. De la  observación del gráfico resultante, es posible identificar a que tipo de posibles estratos corresponde y ayuda al sistema desarrollado en minimizar la búsqueda de las curvas patrón.

Si desean más detalle del trabajo, acá les dejo la url, clic aquí

Saludos a todos y consultas sobre este artículo a mi correo lpizarrofx@gmail.com




Enviar mensaje por Correo en forma secuencial

Hola estimados(as) Hoy les dejo un código en Java que permite enviar correos, usando una base de datos, por ejemplo Mysql. Lo que adjunto...