miércoles, 26 de junio de 2019

Obteniendo datos MIB de equipo

En este post vimos como instalar una servidor zabbix para monitorizar los equipos del centro.

En este otro vimos como instalar el agente en los equipos ubuntu para que nos envíe información del equipo al servidor zabbix.

En el caso de que queramos monitorizar otro tipo de dispositivo como switches, impresoras, etc... el método es diferente, ya que se intercambia información a traves del protocolo SNMP.

Lo más sencillo es agregar el equipo con la plantilla "Module ICMP Ping", que lo que hace es comprobar que el equipo responde al ping y así comprobamos que está encendido.


Nosotros podemos crear y modificar plantillas existentes, a partir de las plantillas oficiales.

La primera dificultad que tenemos para modificar las plantillas es que necesitamos conocer los datos de los OIDS del dispositivo que queremos monitorizar.

En esta web puedes ver información de MIB, OIDS, etc...

Para obtener información de un dispositivo, necesitamos tener instalado en nuestro equipo en paquete snmp. Lo hacemos desde terminal:

root@servidor:~# apt-get install snmp


A continuación para conocer los diferentes OIDS lo hacemos a través de la orde snmpwalk. Puedes ver la ayuda del comando con man snmpwalk.

En mi caso quiero obtener la información de una impresora hp officejet pro x476dw, utilizamos la orden snmpwalk con la ip del equipo. A continuación vemos algunos de los parámetros que nos devuelve:

root@aplicaciones:~# snmpwalk -c public -v 1 172.17.X.X
iso.3.6.1.2.1.43.5.1.1.16.1 = STRING: "ImpresoraAdministra"
iso.3.6.1.2.1.43.5.1.1.17.1 = STRING: "CN58OKK040"
iso.3.6.1.2.1.43.11.1.1.6.1.1 = STRING: "yellow ink CN628A"
iso.3.6.1.2.1.43.11.1.1.6.1.2 = STRING: "cyan ink CN626A"
iso.3.6.1.2.1.43.11.1.1.6.1.3 = STRING: "magenta ink CN627A"
iso.3.6.1.2.1.43.11.1.1.6.1.4 = STRING: "black ink CN625A"


Como vemos tienen que ver con el nombre de la impresora, su número de serie y los cartuchos de tinta instalados.




miércoles, 19 de junio de 2019

Script y tarea para hacer backup de ficheros de configuración de equipos

Para hacer los backups del servidor del centro utilizo un script o sistema parecido al que aparece en este post.

Es aconsejable tener una copia de los archivos de configuración de diferentes servicios de cada máquina, ya que los datos pueden ser diferentes de una a otra y además puede ser que no se controlen por puppet. De esta manera, después de clonar podemos restaurar dichos archivos en un momento.

He hecho un script basándome en el que utilizo para el servidor.
Utilizo un servidor openmediavault por el que comparto los backups y monto por nfs el directorio para guardarlos.

Mediante puppet distribuyo los archivos de la tarea:
- El script, en resumen hace un backup incremental por rsync de una lista de archivos que almaceno en un archivo archivos.includes. Lo almaceno en /var/backups y luego copio por nfs a la máquina de almacenamiento.

root@servidor:/etc/puppet/modules/mp-xubuntu-ficheros-centro/files# cat bin/backupHost.sh 
#!/bin/sh

#########################################################
# Script to do incremental rsync backups
# Adapted from script found on the rsync.samba.org
# Brian Hone 3/24/2002
# This script is freely distributed under the GPL
#
# Para que este script funcione correctamente, desde en el 
# servidor que utilicemos para backup se deben generar las
# claves RSA y DSA mediante el comando:
#    ssh-keygen -t rsa -b 1024
#    ssh-keygen -t dsa -b 1024
#
# Los archivos *.pub generados en el directorio /root/.ssh/ de esa
# máquina se deben copiar a dicha máquina y añadir al fichero 
# /root/.ssh/authorized_keys:
#   cat *.pub >> ~/.ssh/authorized_keys
#
#########################################################


##################################
# Configure These Options
##################################


###################################
# HOSTNAME
#  - This is also used for reporting
#  - Debe responder a un ping (Ej ping quercus).
#  - Su valor corresponderá con el directorio 
#    en el que se almacenarán los backups de ese host
#    Ej: Si HOSTNAME es "mi_host" los backups se guardarán en
#    /var/backups/mi_host/
###################################
HOSTNAME=`facter fqdn`

###################################
# directory to backup
# - This is the path to the directory you want to archive
###################################
BACKUPDIR=/

###################################
# excludes file - contains one wildcard pattern per line of files to exclude
#  - This is a rsync exclude file.  See the rsync man page and/or the
#    example_exclude_file
###################################
EXCLUDES=/usr/local/bin/backup/archivos.excluded
INCLUDES=/usr/local/bin/backup/archivos.included

###################################
# root directory to for backup stuff
###################################
ARCHIVEROOT=/var/backups
#ARCHIVEROOT=/export/Backups/backupltsp

#########################################
# From here on out, you probably don't  #
#   want to change anything unless you  #
#   know what you're doing.             #
#########################################

# directory which holds our current datastore
CURRENT=main

# directory which we save incremental changes to
INCREMENTDIR=`date +%Y-%m-%d`
HORA=`+%c`
#DIAS QUE SE GUARDAN LOS BACKUPS
DIASBORRADO=85

# options to pass to rsync
OPTIONS="--force --ignore-errors --delete --delete-excluded  --files-from=$INCLUDES --backup --backup-dir=$ARCHIVEROOT/$HOSTNAME/$INCREMENTDIR -av"

# make sure our backup tree exists
install -d $ARCHIVEROOT/$HOSTNAME/$CURRENT

# our actual rsyncing function
do_rsync()
{
   #creamos la carpeta donde vamos a guardar los backups, si no existiera
   touch /var/backups
   echo "$HORA  Comenzando backup de $HOSTNAME en $ARCHIVEROOT/$HOSTNAME/$CURRENT"
   echo "$HORA  Borrando Bakcups antiguos de $HOSTNAME ">> /usr/local/bin/backup/backup.log
        # Para ver las copias que se van a eliminarAlmacenamos en archivo log: 
        echo "borramos backups antiguos" >> /usr/local/bin/backup/backup.log
        find $ARCHIVEROOT/$HOSTNAME -maxdepth 1 -mtime +$DIASBORRADO -not -iname main -exec echo {} + >> /usr/local/bin/backup/backup.log
        # y las borramos
        find $ARCHIVEROOT/$HOSTNAME -maxdepth 1 -mtime +$DIASBORRADO -not -iname main -exec rm -rf {} +;
   echo "$HORA  Comenzando backup de $HOSTNAME en $ARCHIVEROOT/$HOSTNAME/$CURRENT">> /usr/local/bin/backup/backup.log
   rsync $OPTIONS $BACKUPDIR $ARCHIVEROOT/$HOSTNAME/$CURRENT
   echo "$HORA  Backup de $HOSTNAME finalizado" >> /usr/local/bin/backup/backup.log
   echo "----------------------------------------------------------------"
   echo "----------------------------------------------------------------">> /usr/local/bin/backup/backup.log
}

# some error handling and/or run our backup and accounting
#if [ -f $EXCLUDES ]; then
if [ -f $INCLUDES ]; then
if [ -d $BACKUPDIR ]; then
# now the actual transfer
do_rsync
# montamos y copiamos por nfs los archivos de backup en la máquina donde guardamos todos los backups de las diferentes máquinas 
mount -t nfs maquinaNFS:/export/Backups /mnt
cp -rf /var/backups/$HOSTNAME /mnt/backupltsp/
umount /mnt/
else
echo "cant find $BACKUPDIR">> /usr/local/bin/backup/backup.log
echo "cant find $BACKUPDIR"; exit
fi

else
echo "cant find $INCLUDES" >> /usr/local/bin/backup/backup.log
echo "cant find $INCLUDES"; exit
fi


- El fichero con lista de archivos a hacer copia: archivos.includes

root@servidor:/etc/puppet/modules/mp-xubuntu-ficheros-centro/files# cat bin/backup
backup/        backupHost.sh  
root@servidor:/etc/puppet/modules/mp-xubuntu-ficheros-centro/files# cat bin/backup/
archivos.excluded  archivos.included  backup.log         
root@servidor:/etc/puppet/modules/mp-xubuntu-ficheros-centro/files# cat bin/backup/archivos.included 
/etc/netplan/01-network-manager-all.yaml
/etc/escuela2.0
/etc/hostname
/etc/hosts
/etc/udev/rules.d/70-persistent-net.rules
/var/lib/aulalinex-profesor/aulalinex-profesor.conf
/var/lib/aulalinex-profesor-ltsp/setup.ini
/etc/hostapd/hostapd.accept
/etc/hostapd/hostapd.conf
/etc/hostapd/hostapd.deny
/etc/SIATIC/siaticcontrol.ini 
/usr/share/linex-ubuntu-puppet/escuela2.0
/etc/zabbix/zabbix_agentd.conf
/etc/controlwifi/controlwifi.conf
/etc/controlwifi/profesor_control_wifi.conf
/etc/cups/printers.conf
/var/spool/cron/crontabs/root


- Un fichero con lista de archivos que deseo excluir (no lo utilizo pero podría): archivos.excludes


- Un crontab para que se ejecute una vez en semana.
                # el cron para hacer backup de los ficheros de configuracion module mp-xubuntu-ficheros-centro/files/bin/backupHost.sh
                cron {  "backupSemanal":
                        command => "/usr/local/bin/backupHost.sh",
                        user => root,
                        weekday => "*/1",
                        ensure => present,
                }


- Para restaurar los archivos utilizaríamos el siguiente script:
root@servidor:/usr/local/bin/backup# cat /bin/restauraHost.sh 
#!/bin/bash
#
# nombre              : restauraHost.sh
# descripción         : Restaurar archivos de configuracion de host
# autor               : José Miguel Medina
# fecha creación      : 20062019
# última modificación : 20062019
# uso                 : ./restauraHost.sh
# instalación         : Guardar en  /usr/local/bin/

#
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License at <http://www.gnu.org/licenses/> for
# more details.
#

HOSTNAME=`facter fqdn`

###################################
# directorio a resturar
# - This is the path to the directory you want to restaure
###################################
BACKUPDIR=/

###################################
# excludes file - contains one wildcard pattern per line of files to exclude
#  - This is a rsync exclude file.  See the rsync man page and/or the
#    example_exclude_file
###################################
EXCLUDES=/usr/local/bin/backup/archivos.excluded
INCLUDES=/usr/local/bin/backup/archivos.included

###################################
# Directorio donde se montan copia de seguridad
###################################
ARCHIVEROOT=/mnt/backupltsp
#ARCHIVEROOT=/export/Backups/backupltsp

#########################################
# From here on out, you probably don't  #
#   want to change anything unless you  #
#   know what you're doing.             #
#########################################

# directory which holds our current datastore
CURRENT=main


# options to pass to rsync

# our actual rsyncing function
do_rsync()
{
   # montamos y copiamos por nfs los archivos de backup en la máquina donde guardamos todos los backups de las diferentes máquinas
   mount -t nfs equipoBackups:/export/Backups /mnt

   # restauramos la copia de seguridad
   rsync $OPTIONS $ARCHIVEROOT/$HOSTNAME/$CURRENT $BACKUPDIR 2>1

   # y desmontamos la máquina de backups
   umount /mnt/

}

# some error handling and/or run our backup and accounting
#if [ -f $EXCLUDES ]; then
if [ -f $INCLUDES ]; then
if [ -d $BACKUPDIR ]; then
# now the actual transfer
do_rsync
else
echo "cant find $BACKUPDIR"; exit
fi

else
echo "cant find $INCLUDES"; exit
fi


Contenedor servidor monitorizacion Zabbix


En un post anterior puse en marcha un servidor proxmox en un servidor de aula.

En este otro ví como restaurar máquinas virtuales desde los backups de dichos contenedores.

La instación y configuración del zabbix la podemos ver en el siguiente post:

https://clouding.io/kb/como-instalar-y-configurar-zabbix/

Yo lo primero que he hecho ha sido cambiar el idioma a español configurando los locales:


root@clonado:~# dpkg-reconfigure locales


- Posteriormente he configurado mi cuenta de correo electrónico para que nos lleguen los avisos por email en el siguiente post.



Configuracion correo electrónico con cuentas de educarex con zabbix

Para configurar la cuenta de correo para que nos lleguen avisos de las incidencias de nuestro servidor zabbix, he seguido el siguiente post:


- Instalamos ssmtp en la máquina donde tenemos instalado zabbix: 

root@aplicaciones:~# apt-get install ssmtp

- Ponemos los datos de nuestra cuenta educarex en la configuración de ssmtp:

oot@aplicaciones:~# cat /etc/ssmtp/ssmtp.conf 
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=adminies.correo@educarex.es

# The place where the mail goes. The actual machine name is required no 
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:465

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
AuthUser=adminies.correo@educarex.es
AuthPass=Passwd_en_claro
UseTLS=YES

- Mandamos un correo de prueba :

root@aplicaciones:~# echo "E-Mail using the command-line" | ssmtp micorreo@gmail.com


- y configuramos los datos dentro del servidor zabbix en Administracion => tipos de medios => creamos uno con nuestros datos del tipo email.


- Sobre esto cambiaremos adminies.correo pornuestra cuenta de adminies.

- Y para finalizar ajustaremos en qué condiciones queremos que nos lleguen correos con los avisos o problemas. Esto se configura en Configuración => Acciones. Creando una o modificando la acción "Report problems to Zabbix administrators".

Modulo puppet para añadir agente zabbix en equipos.

En un post anterior vimos como he instalado zabbix en nuestro servidor proxmox.

También vimos como añadir grupos y equipos a zabbix.

Esta es la clase que utilizo para instalar y configurar el agente zabbix en los diferentes equipos.

Como podemos ver:

- Instalamos el paquete zabbix-agent

- Ponemos el fichero de configuración zabbix donde figuran los datos del servidor zabbix. Podemos ver los datos que hay que añadir o modificar en el siguiente post. Como se puede ver el fichero de configuración lo pongo con replace => false para que no sobreescriba cambios, sino no nos dejaría añadir el hostname de cada uno


- Añadimos el hostname propio de cada equipo al fichero de configuración del agente.
Para ello utilizo el define de Esteban Navas. add_line_above.


import "/etc/puppet/defines/*.pp"

class mp-xubuntu-zabbix{


        # instalamos paquete agente zabbix
        package { "zabbix-agent":
                ensure => "installed",
                alias => "paraLlamarlo",
        }
        # y cargamos la configuración
        file { "/etc/zabbix/zabbix_agentd.conf":
                ensure => present,
                mode => 644,
                owner => root,
                group =>root,
                require => Package["zabbix-agent"],
                source => "puppet:///modules/mp-xubuntu-zabbix/zabbix_agentd.conf",
                # como vamos a añadir el hostname despues ponemos no reemplazar
                replace => false,
        }

        add_line_above { "ponerHostname":
                file => "/etc/zabbix/zabbix_agentd.conf",
                line => "Hostname=$hostname",
                search => "Hostname=$hostname",
                above =>"# Hostname=",

        }

}


Este es el define add_line_abobe:



martes, 18 de junio de 2019

Configurar bios en portátiles HP ProBook

En un post anterior vimos como cree un servidor de clonación FOG para el centro a partir de un contenedor de Proxmox.

Una vez que el servidor FOG está funcionando, ya podemos gestionar las imágenes, crearlas y restaurarlas en los clientes del centro.

Para ello lo primero que tenemos que hacer es configurar los clientes para que como primera opción de arranque sea por red, en vez de por disco duro, como hasta ahora.

En éste post de Esteban puedes ver la configuración del cliente en un equipo hp 600.

Como en cada bios puede ser necesario la modificación en diferentes sitios, vamos a ver cómo configurar la bios de los HP ProBook 4510s.

- Entramos en la bios con F10:

-Nos vamos a la pestaña Configuración del Sistema y ahí abrimos Opciones de Dispositivo integrado:

-En la opción Wake on LAN ponemos Iniciar a través de Red. Así nos dejará iniciar desde la red.

- Dentro de la misma configuración del sistema, en Opciones de inicio, tocamos en dos sitios:

- ponemos Inicio a través de NIC PXE Interna a activado y 

- Nos situamos sobre la opción Orden de iniciio  subimos Ethernet de Notebook hasta la primera opción.


Configurar bios en portátiles ACER

En un post anterior vimos como cree un servidor de clonación FOG para el centro a partir de un contenedor de Proxmox.

Una vez que el servidor FOG está funcionando, ya podemos gestionar las imágenes, crearlas y restaurarlas en los clientes del centro.

Para ello lo primero que tenemos que hacer es configurar los clientes para que como primera opción de arranque sea por red, en vez de por disco duro, como hasta ahora.

En éste post de Esteban puedes ver la configuración del cliente en un equipo hp 600.

Como en cada bios puede ser necesario la modificación en diferentes sitios, vamos a ver cómo configurar la bios de los Acer. en mi caso tengo acer aspire one y acer travel mate. En ambos casos es igual :

- Entramos en la bios con F2:

- Nos vamos a la opcion Main.

- Alli tenemos F12 Boot Menu. La ponemos a Enabled. Así nos permitirá arrancar por red.

- Nos vamos al menú de Boot a la selección del arranque: Boot Device Priority.

nos situamos sobre la opción de arranque por red y lo subimos con F6 hasta la primera opción.