💾 Archived View for sl1200.dystopic.world › art › visitas_capsula_gemini.gmi captured on 2023-01-29 at 02:33:46. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

Publicar el número de visitas en tu cápsula

2022-11-01

#bash #gemini #agate #journalctl

Para calcular el número de visitas se procede a crear un archivo de logs filtrando el resultado de journalctl, el número de visitas será el número de líneas de ese archivo.

En mi caso tengo Debian 10 en mi VPS, lo primero que debes comprobar es si el comando journalctl te da resultados o te saca un error por falta de permisos. Si no tienes los permisos necesarios deberás añadir tu usuario al grupo systemd-journal con el comando:

sudo usermod -a -G systemd-journal usuario

Este sería el script bash, para un servidor Agate:

#!/bin/bash

#Creo el archivo logvisitas si no existe
if [ ! -f home/usuario/bin/visitas/logvisitas ];
    then
    touch /home/usuario/bin/visitas/logvisitas
fi

#Extraigo cada minuto con journalctl todas las líneas en las que aparecen archivos servidos por Agate, que se corresponden con las líneas en las que aparece "agate-server", eliminando después las líneas correspondientes a lecturas automáticas que tengo programadas para la creación del feed atom.xml.  
journalctl --since "1 min ago" | grep 'agate-server' | sed '/feed.gmi/d' | sed '/atom.xml/d' | cut -d " " -f 12 | sed 's/\"//g' | cut -b 31- >> /home/usuario/bin/visitas/logvisitas

#Calculo el número de líneas, que debe corresponderse con las visitas 
v=$(less /home/usuario/bin/visitas/logvisitas | wc -l)
numvisitas="Visitas: $v"

#Publico en la línea 24 del index.gmi el número de visitas
sed -i "24c\\$numvisitas" /home/usuario/gemini/content/index.gmi

#Pongo un límite al número de visitas para que el archivo logvisitas no sea muy grande
if (( v > 300000 ));
    then
    > /home/usuario/bin/visitas/logvisitas
fi

Deberás hacerlo ejecutable con el comando "chmod +x" y después programar su ejecución cada minuto o el tiempo que estimes necesario con "crontab -e". También se podría crear un servicio con systemd y dejar el script en ejecución contínua con pausas con "sleep".

He puesto un límite de 300.000 visitas, si veo que se supera se puede optar por prescindir de un archivo de logs con las visitas guardando únicamente la variable "v" en un archivo y sumando las visitas cada vez que se ejecute el script.

El contenido del archivo en el que almacenes las visitas gemini quedaría:

../images/visitas.png

This work by SL1200 is licensed under CC BY 4.0

◄ BACK

🏠 Home