"Después del juego es antes del juego"
Sepp Herberger

viernes, 11 de noviembre de 2022

Log histórico de portátiles encendidos cada día

Por una necesidad concreta he escrito un script que va rellenando un log de los portátiles de alumnas que se encienden cada día en el instituto. La finalidad es generar un listado tabulado como el siguiente:
...
2022/11/11-08:37:10	portinves-o11	10.192.55.97
2022/11/11-08:37:10	portinves-o12	10.192.54.74
2022/11/11-08:37:23	portinves-o04	10.192.54.91
2022/11/11-08:37:30	portlenovo-o02	10.192.55.106
2022/11/11-08:37:38	portinves-o01	10.192.54.115
2022/11/11-08:37:45	portinves-o09	10.192.54.114
2022/11/11-08:37:46	portinves-o10	10.192.54.159
2022/11/11-08:37:51	portinves-o15	10.192.54.110
2022/11/11-08:38:09	portinves-o05	10.192.54.78
2022/11/11-08:38:26	portinves-o02	10.192.54.116
...
Aunque esa información puede encontrarse en la herramienta "controlies", quería tenerla centralizada en un fichero de texto plano fácilmente procesable para hacer estadísticas. Para saber que portátiles se han encendido puedo consultar el fichero /var/log/syslog del servidor, filtrando por "DHCPACK" y por el nombre "port":
# grep DHCPACK /var/log/syslog | grep -i port
...
Nov 11 10:37:21 servidor dhcpd: DHCPACK on 10.192.54.196 to 28:e3:47:32:7e:0e (portinves-o16) via 10.192.54.1
Nov 11 10:58:53 servidor dhcpd: DHCPACK on 10.192.55.111 to 6c:62:6d:14:e4:36 (portmsi-o13) via 10.192.54.1
Nov 11 11:10:29 servidor dhcpd: DHCPACK on 10.192.55.112 to 6c:62:6d:15:14:b6 (portmsi-o02) via 10.192.54.1
...
En mi caso esto es sencillo porque todos los portátiles de alumnos se llaman "portXXX-oXX". Otro filtro que se puede usar es la MAC, ya que la mayoría de portátiles del mismo lote tiene un prefijo de MAC idéntico.

Una vez obtenido el listado lo manipulo uno poco con utilidades bash para extraer la marca de tiempo, nombre e IP. Luego se ordena y eliminan líneas duplicadas, llevando todo a /var/log/portatiles.log. El script queda:
#!/bin/bash

dhcp_hoy=$(mktemp)
log_portatiles_hoy=$(mktemp)
log_portatiles="/var/log/portatiles.log"

grep DHCPACK /var/log/syslog | grep -i port  > $dhcp_hoy

while read -r line
do
  fecha=$(echo $line | head -c 15)
  fecha=$(date -d"$fecha" +%Y/%m/%d-%H:%M:%S)
  ip=$(echo $line | cut -d" " -f8)
  mac=$(echo $line | cut -d" " -f10)
  nombre=$(echo $line | cut -d" " -f11 | tr -d "()")

  echo -e "${fecha}\t${nombre}\t${ip}" >> $log_portatiles
done < $dhcp_hoy

cat $log_portatiles_hoy >> $log_portatiles

sort -u  -o $log_portatiles $log_portatiles

exit 0
Todo esto se pone en un script del servidor que es invocado un par de veces al día usando crontab. Con eso tendremos el log preparado para consultar y disponer de esa información por si nos la requieren.


Los 同志 chinos han acabado de ensamblar en órbita su Estación Espacial:
Han tenido que montarse su propia estación debido a las reticencias de USA. Cuando no se quiere colaborar no queda otra que competir... y competir contra China es cada vez más complicado. No creo que hayamos aprendido la lección.

Zabbix (IV): creación de plantilla con items y triggers para agentes Linux.

En la primera entrada dedicada a Zabbix vimos templates para monitorizar impresoras Brother color. De todas las impresoras que tengo de esta marca he notado que la Broher DCP-9020CDW cada varios días se bloqueaba y me obligaba a reiniciarla. Si desactivaba la monitorización de Zabbix de esa impresora el problema desaparecía.

He deducido que alguno de los ítems que interrogaban a la impresora acababan finalmente provocando su cuelgue. Durante varios días he ido habilitando e inhabilitando ítems de la plantilla por grupos, mediante un divide y vencerás, hasta dar con el culpable: el "JetDirect Check".
Como es un ítem intrascendente que venía en la plantilla por defecto, lo he dejado desactivado (casilla "Enabled" desmarcada) y ya no ha vuelto a bloquearse:
¡Asunto solucionado!