Éste artículo es la continuación del artículo publicado hace ya un tiempo
referente a la
instalación del servidor OCS Inventory, herramienta que como ya sabrán sirve para inventariar nuestro parque de
equipos informáticos.
A continuación veremos como empaquetar y configurar el instalador del
agente para
Windows, la instalación del agente para
CentOS Linux desde repositorios y la creación de un script bash que
facilite la instalación del agente para los sistemas operativos
openSUSE Linux.
Descarga de Agentes OCS
-
Lo primero que tenemos que hacer es conseguir las versiones de los agentes
compatibles para nuestros Sistemas Operativos, para lo cual tenemos que
acceder al apartado de descargas del sitio web de la herramienta
OCS Inventory:
https://ocsinventory-ng.org/?page_id=1548&lang=en
-
Luego nos dirigimos donde se encuentran los links a las diferentes versiones
de Agentes según el sistema operativo en el cual deseamos instalarlo:
-
Hacemos clic en cualquiera de los links, ya que en cualquier caso nos
llevará a un formulario donde debemos especificar nuestra cuenta de correo y
descomentar el botón de selección si no desean recibir promociones de sus
productos. Al presionar el botón Send nos enviarán un correo con los
links de descarga de los agentes y demás software que componen la
herramienta:
-
El correo que nos debería llegar es similar al siguiente:
-
En las siguientes secciones veremos los procedimientos de instalación de los
agentes para los diferentes sistemas operativos.
Preparación e instalación de Agentes para Windows 7 o superior
-
En este tutorial solo se abarcará la instalación en
Windows 7 o superior con arquitecturas 64 bits utilizando
una versión pre-configurada del agente que facilite la instalación del
agente ya sea de forma manual como a través de políticas de
Active Directory. Para comenzar procedemos a descargar la
versión 2.6 del Agente y del Packager mediante sus correspondientes
enlaces:
-
OCS Windows Agent 2.6.0.0 (64 bits only)
-
OCS Windows Packager 2.6 (64 bits only)
También necesitamos descargar el paquete de herramientas
PSTools, de entre las cuales estaremos necesitando la herramienta
PsExec que permite la ejecución de procesos desde la línea de
comandos y que es un requerimiento para el programa
OCS Windows Packager:
-
PsTools
Una vez descargadas los programas arriba mencionados a nuestra
máquina Windows, procedemos a des-compactarlos.
-
Abrimos una consola CMD y ejecutamos el comando
ping testsrv.gknet.local para comprobar que desde la máquina Windows
podemos conectarnos al servidor sin especificar la dirección IP, ya que
debería resolverlo nuestro servidor DNS local. Caso contrario podemos
agregar una entrada en el archivo hosts del
directorio C:\Windows\System32\drivers\etc.
-
De nuestro servidor testsrv descargamos el archivo
apache.crt del directorio /etc/httpd/ssl a nuestra
máquina Windows y lo renombramos como cacert.pem.
-
Una vez que tengamos todos los programas y archivos anteriores, procedemos a
copiar el programa PsExec.exe de la
carpeta PSTools y el archivo cacert.pem dentro
de la carpeta del programa OCS-Windows-Packager-2.6 junto al
programa OcsPackager.exe.
-
A continuación ejecutamos el programa OcsPackager.exe para
empaquetar el instalador y asignamos los siguientes valores en cada campo:
-
Agent Setup File: Especificamos la ruta al instalador del agente
OCS-NG-Windows-Agent-Setup.exe
-
Certificate file: Especificamos la ruta al certificado
cacert.pem
-
Command line options: Se le agregan los parámetros que el
empaquetador luego utiliza para instalar el agente. Las directivas que
se recomiendan cargar como ser la url del servidor, activar la conexión
SSL, usuario, contraseña de autenticación, ejecución en modo
silencioso entre otros:
/server=https://testsrv.gknet.local/ocsinventory /USER=ocsagentes
/PWD=passwagentes /SSL=1 /S /NOW /NO_SYSTRAY
-
User: Para especificar la cuenta del administrador de
dominio admin@gknet.local.
-
Password: Para especificar la contraseña del usuario de
dominio.
-
En el siguiente paso el asistente nos permite seleccionar el directorio en
donde se va a generar el instalador empaquetado del agente, dejamos todo por
defecto para que genere el archivo en el escritorio y presionamos el botón
OK para iniciar el procedimiento de generación del instalador.
-
Al finalizar el asistente presionamos el botón Close para finalizar
el proceso.
-
A continuación ya podemos proceder con la instalación del agente, pero antes
cambiamos su nombre de OcsPackage.exe a OcsAgentPackage-Win7.exe
y con clic derecho lo ejecutamos como administrador, ya que sino la
instalación no funcionará de forma adecuada:
-
Una vez ejecutado el instalador lo único que nos aparecerá en pantalla será
un banner que diga OCS Inventory NG, que nos permite saber que el
asistente se está instalando de forma silenciosa. Para corroborar que el
agente se haya instalado correctamente tenemos que verificar que el servicio
OCS Inventory Service esté iniciado.
-
Podemos verificar el archivo de configuración ocsinventory.ini o los
archivos logs del Agente especificando la siguiente dirección en el
explorador de Windows:
%programdata%\OCS Inventory NG\Agent
-
Con la herramienta WinSCP procedemos a subir el Agente instalador
OcsAgentPackage-Win7.exe al directorio
/srv/ocsinventory/agents/Windows de nuestro servidor
OCS Inventory (testsrv.gknet.local) a fin de facilitar la
distribución y descarga del agente de instalación de Windows.
-
Para facilitar la instalación desde una política GPO de
Active Directory nos conectamos por consola al servidor
testsrv.gknet.local y nos ubicamos en el directorio
/srv/ocsinventory/agents/Windows, en donde creamos un archivo llamado
ocsinstallgpo.bat y luego lo editamos.
[root@testsrv ~]# cd /srv/ocsinventory/agents/Windows
[root@testsrv Windows]# touch ocsinstallgpo.bat
[root@testsrv Windows]# vim ocsinstallgpo.bat
Al mismo le agregamos las siguientes directivas shell de Windows que
permiten la instalación del agente previa verificación si ya se encuentra
instalado o no en el equipo:
@echo off
rem Script que permite la instalación del Agente desde recursos compartidos.
rem Se verifica que el agente aún no esté instalado.
if exist "%programfiles(x86)%\OCS Inventory Agent\OCSInventory.exe" goto end
if exist "%programfiles%\OCS Inventory Agent\OCSInventory.exe" goto end
rem Se procede a ejecutar el instalador desde el recurso compartido.
start \\testsrv.gknet.local\ocsagents\Windows\OcsAgentPackage-Win7.exe
:end
Además, aprovechamos la ocasión para crear un archivo Readme.txt:
[root@testsrv Windows]# touch Readme.txt
[root@testsrv Windows]# vim Readme.txt
Al cual le agregamos el siguiente contenido para recordarnos los pasos
importantes que debemos seguir para que la instalación del agente se realice
de forma adecuada:
README:
=======
El instalador se tiene que ejecutar como "Administrador", ya que
se requiere dicho nivel de acceso para poder instalar y registrar
la aplicacion OCS Inventory como un servicio que corre en segundo
plano.
-
Solo resta mencionar que con los pasos anteriores ya dispondremos de un
instalador pre-configurado del Agente OCS Inventory para nuestros
equipos Windows 7 o superior, disponible para ser descargado
desde nuestro servidor OCS Inventory colocando la URL \\testsrv.gknet.local\ocsagents\Windows
en el explorador de Windows:
Instalación del Agente OCS en equipos con openSUSE Linux
Para automatizar y agilizar la instalación, he decidido crear un
script que se almacene en la carpeta de agentes del servidor
testsrv, y que desde los equipos con
openSUSE Linux se pueda descargar y ejecutar para proceder con la instalación del agente. A continuación veremos
la creación del script y el proceso de instalación del Agente con el mencionado script:
-
Nos conectamos al servidor testsrv con el usuario root y nos
dirigimos al directorio /srv/ocsinventory/agents/openSUSE en el cual
descargamos desde Github el archivo
Ocsinventory-Unix-Agent-2.6.1.tar.gz con los fuentes para instalar el
agente:
[root@testsrv ~]# cd /srv/ocsinventory/agents/openSUSE
[root@testsrv openSUSE]# wget https://github.com/OCSInventory-NG/UnixAgent/releases/download/v2.6.1/Ocsinventory-Unix-Agent-2.6.1.tar.gz --no-proxy
Para este ejemplo se va a utilizar la versión del agente 2.6.1 (Que
no aparece sugerido como opción de descarga en el correo), sin embargo,
pueden verificar en
éste enlace
para obtener las últimas versiones disponibles.
-
Luego creamos el archivo ocsinstaller-opensuse-agent.sh, le asignamos
los permisos correspondientes y lo editamos:
[root@testsrv openSUSE]# touch ocsinstaller-opensuse-agent.sh
[root@testsrv openSUSE]# chmod 644 ocsinstaller-opensuse-agent.sh
[root@testsrv openSUSE]# vim ocsinstaller-opensuse-agent.sh
Y le agregamos el siguiente script bash:
#/bin/bash
# REFS: http://wiki.ocsinventory-ng.org/03.Basic-documentation/Setting-up-the-UNIX-agent-on-client-computers/
# Verificacion que el operador haya pasado la contrasenia
# de conexión del usuario OCS_USER.
if [ -z "$1" ]; then
echo ""
echo "ATENCION: Debe pasar como argumento la contraseña del usuario $OCS_USER"
echo ""
exit 1
fi
# Definicion de la ruta de descarga de los instaladores.
OCS_BIN_FILE="/usr/bin/ocsinventory-agent"
OCS_LOG_FILE="/var/log/ocsinventory-agent.log"
OCS_CFG_FILE="/etc/ocsinventory-agent/ocsinventory-agent.cfg"
OCS_SRV_NAME="testsrv.gknet.local"
OCS_HTTP_USER="ocsagentes"
OCS_HTTP_REALM="OCS Inventory agent area"
TEMP_DIR=/tmp/ocsinstaller
# Encriptamos el nombre de usuario y la contrasenia en Base64, ya que seran guardados en el archivo de
# configuracion del agente y ademas es un requisito para que el metodo de autenticacion Apache Basic
# del servidor no genere errores tipo "AH01618: user \xa6\xbb\x9em not found".
OCS_HTTP_USER_ENCRYP=$(echo -n $OCS_HTTP_USER | base64)
OCS_HTTP_PASS_ENCRYP=$(echo -n $1 | base64)
# Verificacion del nombre de la version y distribucion Linux.
arch=$(uname -m)
kernel=$(uname -r)
if [ -n "$(command -v lsb_release)" ]; then
distroname=$(lsb_release -s -d | tr -d '="')
elif [ -f "/etc/os-release" ]; then
distroname=$(grep PRETTY_NAME /etc/os-release | sed 's/PRETTY_NAME=//g' | tr -d '="')
elif [ -f "/etc/debian_version" ]; then
distroname="Debian $(cat /etc/debian_version)"
elif [ -f "/etc/redhat-release" ]; then
distroname=$(cat /etc/redhat-release)
elif [ -f "/etc/SuSE-release" ]; then
distroname=$(cat /etc/SuSE-release | grep openSUSE)
else
distroname="$(uname -s) $(uname -r)"
fi
# Verifica si la distribucion de linux en la que se ejecuta el script corresponde con la version de
# openSUSE para el cual fue desarrollado el script.
if [ "$distroname" == "openSUSE Leap 15.0" ] || [ "$distroname" == "openSUSE Leap 15.1" ]; then
# Instalacion de paquetes requeridos mediante zypper:
zypper -n in -l gcc pciutils dmidecode nmap perl-App-cpanminus perl-XML-Simple perl-Net-IP perl-Digest-MD5 perl-Net-SSLeay perl-IO-Socket-SSL perl-Crypt-SSLeay perl-LWP-Protocol-https perl-Net-SNMP perl-Net-Netmask
# Instalacion de dependencias PERL con la herramienta CPAN MINUS:
cpanm Compress::Zlib
cpanm LWP::UserAgent
cpanm Data::UUID
cpanm Proc::Daemon
cpanm Proc::PID::File
# Instalacion de dependencias PERL opcionales con la herramienta CPAN MINUS:
cpanm Nmap::Parser
cpanm Module::Install
cpanm Net::CUPS
cpanm Parse::EDID
else
echo "Este instalador no funciona con la distribucion de Linux '$distroname'."
exit 1
fi
# Creacion del directorio de instalacion y ubicacion en el mismo:
mkdir $TEMP_DIR
cd $TEMP_DIR
# Descarga del Agente OCS Inventory del servidor:
wget http://$OCS_SRV_NAME/ocsagents/openSUSE/Ocsinventory-Unix-Agent-2.6.1.tar.gz --no-proxy
# Descompactado de los paquetes de instalacion:
tar -xzf Ocsinventory-Unix-Agent-2.6.1.tar.gz
# Instalacion del paquete Perl Ocinventory::Unix::Agent
cd $TEMP_DIR/Ocsinventory-Unix-Agent-2.6.1
env PERL_AUTOINSTALL=1 perl Makefile.PL && make && make install && perl postinst.pl --nowizard --server=https://$OCS_SRV_NAME/ocsinventory --nossl --logfile=$OCS_LOG_FILE --user="$OCS_HTTP_USER_ENCRYP" --password="$OCS_HTTP_PASS_ENCRYP" --proxy="" --crontab
# Como en el comando de compilacion anterior no podemos pasar un realm con
# espacios en la cadena de texto usando la directiva --realm="", y por ende
# tampoco la directiva --now, procederemos a continuación a agregar la directiva
# realm de forma manual al archivo de configuración y a ejecutar el agente por
# primera vez con las siguientes dos comandos:
echo 'realm="'$OCS_HTTP_REALM'"' >> $OCS_CFG_FILE
$OCS_BIN_FILE
# Eliminacion de la carpeta temporal:
cd /tmp
rm -Rf ocsinstaller/
# Salida:
exit 0
Como se puede observar más arriba el script se encuentra desarrollado de
forma preliminar para que sea compatible solo con openSUSE 15.0 y
15.1.
-
En el mismo directorio creamos el archivo Readme.txt, asignamos los
permisos, lo editamos:
[root@testsrv openSUSE]# touch Readme.txt
[root@testsrv openSUSE]# chmod 644 Readme.txt
[root@testsrv openSUSE]# vim Readme.txt
Y le agregamos el siguiente contenido que permitirá recordar en el futuro
como proceder con la instalación del agente pre-configurado en una máquina
cliente con la distro openSUSE:
README:
1)- Para instalar el Agente OCS Inventory en una openSUSE Linux
tenemos que abrir una consola o conectarnos desde PuTTY a la pc
openSUSE, conectarnos al equipo con el usuario root y
verificamos la version de openSUSE que tiene instalado el equipo:
opensusecli:~ # cat /etc/os-release
2)- Descargamos el script ocsinstaller-opensuse-agent.sh desde
el servidor testsrv.gknet.local con el siguiente comando:
opensusecli:~ # wget -N http://testsrv.gknet.local/ocsagents/openSUSE/ocsinstaller-opensuse-agent.sh --no-proxy
3)- Ejecutamos el script instalador del Agente OCS y pasamos
como argumento la contrasenia del usuario de conexion con el
siguiente comando:
opensusecli:~ # sh ocsinstaller-opensuse-agent.sh password_ocsagents
4)- Con estos pasos al finalizar el agente ya deberia estar
instalado correctamente y haber informado al servidor sobre
el estado del equipo en donde se instalo el agente.
-
A continuación solo nos resta seguir los pasos del archivo
Readme.txt para instalar el agente en una pc con la distro
openSUSE 15.0 o 15.1. Comenzamos por conectarnos con el
usuario root y verificar la versión:
opensusecli:~ # cat /etc/os-release
NAME="openSUSE Leap"
VERSION="15.1"
ID="opensuse-leap"
ID_LIKE="suse opensuse"
VERSION_ID="15.1"
PRETTY_NAME="openSUSE Leap 15.1"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:15.1"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"
opensusecli:~ #
Descargamos el script de instalación ocsinstaller-opensuse-agent.sh:
opensusecli:~ # wget -N http://testsrv.gknet.local/ocsagents/openSUSE/ocsinstaller-opensuse-agent.sh --no-proxy
--2020-04-27 00:36:34-- http://testsrv.gknet.local/ocsagents/openSUSE/ocsinstaller-opensuse-agent.sh
Resolviendo testsrv.gknet.local (testsrv.gknet.local)... 192.168.1.10
Conectando con testsrv.gknet.local (testsrv.gknet.local)[192.168.1.10]:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 2269 (2,2K) [application/x-sh]
Grabando a: “ocsinstaller-opensuse-agent.sh”
ocsinstaller-opensuse-agent.sh 100%[========================================================>] 2,22K --.-KB/s en 0s
2020-04-27 00:36:34 (265 MB/s) - “ocsinstaller-opensuse-agent.sh” guardado [2269/2269]
opensusecli:~ #
Y finalmente lo ejecutamos para instalar el agente:
opensusecli:~ # sh ocsinstaller-opensuse-agent.sh passwagentes
Cargando datos del repositorio...
...
...
Setting OCS Inventory NG server address...
Looking for OCS Invetory NG Unix Unified agent installation...
ocsinventory agent presents: /usr/bin/ocsinventory-agent
Setting crontab...
Creating /etc/ocsinventory-agent directory...
Writing OCS Inventory NG Unix Unified agent configuration
Creating /var/lib/ocsinventory-agent/https:__testsrv.gknet.local_ocsinventory directory...
Copying SNMP MIBs XML files...
Activating modules if needed...
New settings written! Thank you for using OCS Inventory
Can't open display
opensusecli:~ #
-
Una vez finalizado la instalación recomendamos revisar la hora en que está
programada la ejecución diaria del agente OCS Inventory, ya que suele
asignar horarios aleatorios que pueden caer a media noche donde
probablemente el equipo esté apagado. Para ello editamos el archivo ocsinventory-agent ubicado en el directorio /etc/cron.d:
opensusecli:~ # vim /etc/cron.d/ocsinventory-agent
Y verificamos que la hora programada (resaltada en rojo) sea correcta, si
figura un horario en que el equipo probablemente esté apagado (medianoche,
madrugada, etc.) cambiamos a una hora en que el equipo normalmente se
encuentra encendido.
PATH=/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/lib/mit/sbin
0 15 * * * root /usr/bin/ocsinventory-agent --lazy > /dev/null 2>&1
Si hemos realizado un cambio al archivo cron
ocsinventory-agent reiniciamos el servicio crontab:
opensusecli:~ # systemctl restart cron
-
Por otro lado, si queremos ejecutar el agente de forma manual podemos
ejecutar desde la línea de comandos la siguiente directiva:
opensusecli:~ # /usr/bin/ocsinventory-agent
Can't open display
opensusecli:~ #
-
Finalmente podemos verificar en la consola de administración
OCS Inventory del servidor testsrv donde ya debería aparecer
la entrada para el equipo opensusecli:
Instalación del Agente OCS en equipos con CentOS 8 Linux
-
Para las distribución Linux CentOS 8 podemos instalar los paquetes a
partir del repositorio oficial, para lo cual comenzamos por conectarnos a
nuestro equipo cliente e instalamos y activamos el repositorio
EPEL (Extra Packages for Enterprise Linux) requerido para suplir
algunas dependencias.
[root@centoscli ~]# yum --enablerepo=extras install epel-release
-
Luego procedemos a descargar e instalar el repositorio ocsinventory-release-latest que contiene los paquetes requeridos para instalar el agente OCS Inventory:
[root@centoscli ~]# wget https://rpm.ocsinventory-ng.org/ocsinventory-release-latest.el8.ocs.noarch.rpm
[root@testsrv ~]# yum install ocsinventory-release-latest.el8.ocs.noarch.rpm
-
Para la instalación del Agente OCS Inventory debemos ejecutar el siguiente comando:
[root@centoscli ~]# dnf --enablerepo=PowerTools --enablerepo=epel-playground install ocsinventory-agent
-
A continuación tenemos que agregar en el archivo de configuración
ocsinventory-agent.cfg del directorio /etc/ocsinventory las
directivas de configuración del usuario y la contraseña de autenticación
HTTP requerida por el servidor OCS Inventory, que deben ir
encriptados en Base64 para que el servidor no los rechace:
[root@centoscli ~]# echo user=$(echo -n 'ocsagentes' | base64) >> /etc/ocsinventory/ocsinventory-agent.cfg
[root@centoscli ~]# echo password=$(echo -n 'passwagentes' | base64) >> /etc/ocsinventory/ocsinventory-agent.cfg
Luego editamos el archivo ocsinventory-agent.cfg:
[root@centoscli ~]# vim /etc/ocsinventory/ocsinventory-agent.cfg
Y comentamos la directiva local (resaltada en rojo), descomentamos la directiva server que debe tener asignada la URL
del servidor (resaltado en amarillo) y al final le agregamos las directivas adicionales ssl y
realm (resaltadas en verde). Debería quedar similar a lo que sigue:
#
# OCS Inventory "Unix Unified Agent" Configuration File
#
# options used by cron job overides this (see /etc/sysconfig/ocsinventory-agent)
#
# Server URL, unconmment if needed
server = https://testsrv.gknet.local/ocsinventory
#local = /var/lib/ocsinventory-agent
# Administrative TAG (optional, must be filed before first inventory)
# tag = your_tag
# How to log, can be File,Stderr,Syslog
logger = Stderr
logfile = /var/log/ocsinventory-agent/ocsinventory-agent.log
# Server HTTP Basic Auth data:
user=b2NzYWdlbnRlcw==
password=cGFzc3dhZ2VudGVz
ssl = 0
realm = "OCS Inventory agent area"
OBS: Es importante recordar que la directiva realm es muy
importante y debe tener el mismo texto a la directiva
AuthName configurada en la sección de Apache Auth Basic del
servidor OCS Inventory, caso contrario el servidor generará un error
401 Unauthorized.
-
A continuación ya podemos probar la ejecución del agente:
[root@centoscli ~]# /usr/sbin/ocsinventory-agent
-
Si bien ya existe una tarea programada configurada para el servicio OCS
Inventory en el directorio /etc/cron.hourly, la misma solo funciona
si se activa en el archivo de configuración
/etc/sysconfig/ocsinventory-agent. En vez de eso yo prefiero
configurar una tarea programada con una configuración personalizada para que
el agente se ejecute por día, para lo cual primero creamos el archivo
ocsinventory-agent en el directorio /etc/cron.d y luego
lo editamos:
[root@centoscli ~]# touch /etc/cron.d/ocsinventory-agent
[root@centoscli ~]# vim /etc/cron.d/ocsinventory-agent
Y una vez adentro agregamos la siguiente directiva para que cada tarde a las
15:30 horas se ejecute el agente:
# Tarea programada para la ejecucion diaria del agente OCS Inventory.
30 15 * * * root /usr/sbin/ocsinventory-agent --lazy > /dev/null 2>&1
Realizado lo anterior salimos del archivo y reiniciamos el servicio
crontab para que los cambios tomen efecto:
[root@centoscli ~]# systemctl restart crond
Y con eso ya tenemos el agente funcionando para la distribución
Linux CentOS 8.
Captura de la información recopilada por el servidor OCS Inventory
Para finalizar quisiera compartir unas capturas de la interfaz de administración del servidor OCS Inventory con los registros de inventario de las
computadores que fueron reportadas por los agentes instalados en los pasos
previos.
Como se puede observar en las capturas previas, la información de los tres
sistemas operativos fueron reportados adecuadamente al servidor por los agentes, un hito con el cual puedo dar por finalizado el artículo.
Comentarios
Publicar un comentario