viernes, 2 de enero de 2015

Inventario automático de equipos con OCS Inventory

Algo que ocurre comúnmente en una red informática es no poder controlar el inventario de equipos que se tiene, puesto que el número de estos es muy elevado.

Para poder realizar esta tarea existen herramientas que permiten crear un servidor de inventariado al cual los clientes envían la información de forma automática dentro de la red.

Una herramienta excelente para realizar esta tarea es OCS Inventory. Aplicación gratuita que nos ayuda a realizar el inventario de los equipos.

Dicha aplicación se compone de dos ejecutables:
  • OCS Inventory-Server: Esta es la herramienta necesaria para la instalación del servidor el cual se encargará de recolectar la información del inventario.
  • OCS Inventory-Agent: Esta es la herramienta es la que se encarga de enviar la información a los equipos. Por lo que es necesario que se instale en todos los clientes.

Instalación del servidor OCS Inventory

La instalación del servidor de OCS no es complicada, veamos lo pasos para instalarlo en un entorno Windows Server:
  1. Descarga el paquete del servidor desde aquí y ejecútalo.
  2. Escoge el idioma de la instalación.
  3. Si no hay disponible previamente un servidor XAMPP en el equipo, aparecerá una advertencia, pulsa sobre Aceptar, el propio OCS lo instalará con todos los componentes.
  4. Pulsa Siguiente en la pantalla de bienvenida.
  5. Acepta los términos de licencia y pulsa Siguiente.
  6. Selecciona la ruta de instalación de XAMPP. Por defecto se instala en C:/xampp
  7. Elige el tipo de instalación por defecto, que es Full, y pulsa Siguiente.
  8. Pulsa Instalar.
  9. Pulsa Terminar.
Mientras que el paquete de OCS se instala, nos mostrará una serie de ventanas de consola de Windows y nos solicitará que pulsemos cualquier tecla para continuar.

Tras esto hemos instalado el servidor, ahora tendríamos que pasar a realizar la configuración de este.

Configuración de la base de datos MySQL y el servidor Apache

Vamos a explicar los pasos a realizar en la configuración de la base de datos y del servidor, puesto que es muy importante para que los equipos de la red puedan establecer conexión de forma correcta con el servidor de OCS.

1 Configurar las claves de acceso para el servidor de MySQL y el Apache

Lo primero que debemos hacer es proteger nuestro accesos al servidor MySQL y Apache, poniéndoles contraseña.

Para ello primero accedemos a la dirección http://localhost/security/index.php:


Después accedemos a http://localhost/security/xamppsecurity.php y cambiamos la password de root de MySQL. 


Es importante que seleccionemos la opción de guardar la contraseña en un fichero debido a que así no la pedirá en futuras conexiones. Debido a que esté archivo se guarda en el server, no nos provoca ningún tipo de vulnerabilidad contra ataques externos.

Ahora cambiamos las claves de acceso remoto del servidor Apache:

2 Configurar el acceso permitido para los equipos de la red

Es necesario que configuremos el servidor apache para permitir el acceso remoto (con contraseña, por supuesto) a los equipos de la red.
Esto tiene el principal problema de que hay que configurar el server de OCS para que los clientes se conecten. El OCS Inventory está alojado en un servidor Apache (XAMPP), por lo que si no proporcionamos acceso al servidor, no podrán conectarse los clientes a OCS.

Para ello accedemos a la ruta siguiente dentro del servidor donde se haya instalado XAMPP: C:\xampp\apache\conf\extra.

Una vez aquí accedemos al fichero de configuración httpd-xampp.conf y debemos de modificar el campo LocationMatch.

Una vez aquí añadimos a la línea Allow from la dirección de nuestra red y la máscara de red (192.168.0.0/16 en nuestro caso):


Tras esta acción, debido a que hemos modificado un parámetro de la configuración de apache, debemos reiniciar el servicio.

Para ello podemos hacerlo desde: C:\xampp\xampp-control.exe, que es la consola de control de XAMPP.

Pulsamos sobre el botón Stop que está junto a Apache. Tras esto pulsamos el mismo botón pero esta vez en Start.

Nota: si apache no se inicia comprueba que no haya errores tipográficos de ningún tipo en C:\xampp\apache\conf\extra\httpd-xampp.conf.

Una vez reiniciado el servicio de apache podrás comprobar que tienes acceso al servidor no como localhost sino como ip: http://TU_IP/xampp/ 

3 Creación de una base de datos con phpMyAdmin para el servidor de OCS

Una vez creado y configurado el servidor, pasaremos a crear una base de datos y un usuario para que guarde la información que va a recolectar el servidor de inventario.

Para ello tenemos una aplicación denominada phpMyAdmin para gestionar la base de datos de nuestro servidor.

Para acceder al panel de gestión de la base de datos vamos a http://TU_IP/phpmyadmin/

Una vez aquí vamos al menú denominado bases de datos y creamos una base de datos para ocs con el nombre ocsweb. Es muy importante que lleve este nombre debido a que la configuración por defecto de OCS Inventory admite este nombre, aunque en caso de ponerle otro nombre podremos cambiarlo posteriormente en la configuración del servidor de inventario.

Ahora procederemos a crear un usuario con permisos de lectura, escritura y ejecución para la base de datos creada. Esto también nos permite realizarlo phpMyAdmin.

Para ello accedemos al menú privilegios y luego pulsamos sobre agregar un nuevo usuario.



Ahora introduciremos los datos del nuevo usuario:
  • Nombre de usuario: ocs
  • Servidor: Usar la tabla Anfitrión (Host)
  • Contraseña: ocs
  • Privilegios globales: Marcar todos

Nota: Los datos introducidos son lo que vienen por defecto en OCS. En caso de que queramos que sean otros habrá que cambiarlos posteriormente en el fichero de configuración de OCS Inventory Server.

Configuración del servidor de OCS Inventory

Ahora que ya tenemos la base de datos y el servidor de OCS instalado pasaremos a configurarlo.
Para acceder al servidor debemos de ir a la dirección: http://TU_IP/ocsreports/


Los datos a introducir son:

  • MySQL login: ocs (Nombre del usuario de la base de datos creado).
  • MySQL password: ocs (Password de la base de datos).
  • Name of Database: ocsweb (Nombre de la base de datos MySQL creada).
  • MySQL HostName: TU_IP (Nombre o dirección ip del servidor MySQL)
Nota: La ip o el nombre de host que hay que introducir en MySQL HostName no puede ser localhost.


Una vez ingresado los datos nos aparecerá una pantalla donde nos indicará que se han creado las tablas y los datos correspondientes en la base de datos del servidor OCS Inventory.
Una vez aquí, debemos recargar la página que finalmente nos llevará a la pantalla de acceso.


Ingresamos los datos siguientes:
  • User: Admin
  • Password: Admin


Y ya tendremos acceso a los reports del servidor de inventariado.


Instalación del agente OCS Inventory

Una vez que ya disponemos del servidor perfectamente configurado y operativo, es necesario instalar el agente de inventariado en tantos equipos como deseemos, el proceso es realmente sencillo:
  1. Descarga el agente desde aquí y ejecútalo.
  2. Pulsa Next en la pantalla de bienvenida.
  3. Pulsa I Agree para aceptar las condiciones de uso.
  4. Selecciona Network inventory para que instale el sistema de inventariado por red en el equipo  y pulsa Next.
  5. Debemos de indicar la dirección desde la que recibirá la información el servidor de OCS. Escribimos: http://IP_SERVER_OCS/ocsinventory. Tras indicarla pulsamos en Next.
  6. Como no vamos a usar servidor proxy no indicamos ningún parámetro y pulsamos Next.
  7. En General options marcamos Enable verbose log para que registre todos los datos de forma detallada en el archivo de log, lo que luego nos puede ayudar mucho en caso de fallo. En Setup options marcamos la opción Immediatly launch inventory (=/NOW) para que envíe la información del inventario del equipo al servidor en cuanto finalice la instalación. Pulsamos Next.
  8. Seleccionamos la carpeta donde se va a instalar el agente de OCS que por defecto es C:\Program Files (x86)\OCS Inventory Agent y pulsamos en Install.
Ahora que ya está instalado, el agente enviará la información del inventariado del equipo de forma periódica al servidor. El proceso se realiza en segundo plano por lo que no se muestra ningún tipo de ventana en el equipo.

Visualización y administración del inventariado

Ahora que ya está todo instalado y configurado podemos acceder a http://TU_IP/ocsreports/ para ver los equipos inventariados.

Es posible que al acceder no nos muestra ninguna máquina en lista aunque ya hayamos instalado el agente y enviado la información en varios equipos. Si os ha ocurrido esto, veamos qué puede ser.

Lo primero que habría que hacer es consultar el log de errores del servidor Apache que se encuentra en C:\xampp\apache\logs\error.log para que nos muestre que está pasando.

Ahí veremos los errores que nos está indicando Apache. Veremos algo parecido a esto:

[Tue Dec 23 13:51:32 2014] [notice] Digest: generating secret for digest authentication ...
[Tue Dec 23 13:51:32 2014] [notice] Digest: done
[Tue Dec 23 13:51:34 2014] [notice] Child 5236: Child process is running
[Tue Dec 23 13:51:34 2014] [notice] Child 5236: Acquired the start mutex.
[Tue Dec 23 13:51:34 2014] [notice] Child 5236: Starting 150 worker threads.
[Tue Dec 23 13:51:34 2014] [notice] Child 5236: Starting thread to listen on port 443.
[Tue Dec 23 13:51:34 2014] [notice] Child 5236: Starting thread to listen on port 443.
[Tue Dec 23 13:51:34 2014] [notice] Child 5236: Starting thread to listen on port 80.
[Tue Dec 23 13:51:34 2014] [notice] Child 5236: Starting thread to listen on port 80.
[Fri Jan 02 12:28:28 2015] [error] [client 192.168.1.221] Can't call method "do" on an undefined value at C:/xampp/perl/site/lib/Apache/Ocsinventory/Server/System.pm line 177.\n

Aquí podemos observar un error la última línea.
Este error se debe a que hay algún problema en el fichero de configuración de OCS Inventory.

Solución error Can't call method "do" on an undefined value at C:/xampp/perl/site/lib/Apache/Ocsinventory/Server/System.pm

Según la documentación este error lo arroja el hecho de que el usuario, la password o la dirección del servidor indicada en el fichero de configuración no es correcta.

Por lo tanto repasaremos el fichero de configuración que está en: 
C:\xampp\apache\conf\extra\ocsinventory-server.conf

Os aconsejo que abráis el fichero con otro programa que no sea el bloc de notas, puesto que tienen gran cantidad de datos y no podría encontrar la información.

Buscamos en el fichero de configuración las siguientes líneas:

PerlSetEnv OCS_DB_HOST localhost
PerlSetEnv OCS_DB_PORT 3306
PerlSetEnv OCS_DB_NAME ocsweb
PerlSetEnv OCS_DB_LOCAL ocsweb
PerlSetEnv OCS_DB_USER ocs
PerlSetVar OCS_DB_PWD ocs


Como vemos, la dirección ip del servidor de la base de datos está identificada como localhost. Debería de ser la ip correcta del servidor de la base de datos.

Por lo que debemos de cambiar dicha línea por:
PerlSetEnv OCS_DB_HOST IP_SERVER_MYSQL
El resto de líneas son correctas puesto que identifican el puerto de la base de datos (3306 por defecto), el nombre de la base de datos (ocsweb), el nombre de la base de datos local (ocsweb puesto que es la misma), el usuario de la base de datos (ocs) y la contraseña del usuario de la base de datos (ocs).

Ahora debemos de reiniciar el servicio de Apache del servidor para que los cambios surtan efecto.


Una vez realizada esta acción pasamos a recargar la página de http://TU_IP/ocsreports/
y tras unos minutos ya tendremos las máquinas inventariadas.

Ahora ya tendremos multitud de información de todos los equipos inventariados. Podemos ver una lista de ellos junto con algunos datos en el icono

El cuál nos da una lista con algunos equipos y también ciertos datos de estos como el usuario, el nombre del equipo, el sistema operativo, la RAM, la velocidad de la CPU, etc.
Con esto ya tendremos nuestro servidor de OCS totalmente funcional.
Saludos curiosos.

Install Drupal 8 in CentOS

Drupal is an open source, flexible, highly scalable and secure Content Management System (CMS) which allows users to easily build and create...