...
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.