You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

157 lines
6.7 KiB
Bash

#!/bin/bash
# cpdAlerts 2025
# David M <milarupa@yahoo.es>
# Fanta <fanta@56k.es>
# Vigilancia del boletines oficiales de diferentes comunidades
# Dependencias: apt install poppler-utils wget bsd-mailx sendmail
opt="$1"
version="0.1"
notificationEmails="email@example.es email2@anotherexample.es" # permite lista de varios separados por espacio
keyWords="centro de datos|centos de datos|centro de procesamiento de datos|centros de procesamiento de datos|centro de almacenamiento de datos|centros de almacenamiento de datos|aws|amazon aws|centres de dades|centre de processament de dades|centre de dades"
localsavemode=false
function checkLaboralDay {
if (( $(date +"%u") == 6 || $(date +"%u") == 7 )); then echo -e "[+] El script no trabaja en fin de semana. Descansa\n"; help; exit; fi
}
function sendMail() {
if [ "$localsavemode" = false ] ; then
echo "[+] Resultados encontrados en $2 - $1"
echo -e "He encontrado resultados en $1\nPara las key words siguientes: $keyWords\n\n" > .email
cat .email .cpds | mailx -r alertascpds@56k.es -s "Alertas CPDs - Resultados en $2" $notificationEmails
else
mv .cpds resultado-$2-$(date +"%d-%m-%Y").txt
fi
}
function testNotification() {
comunidad="TestLand"
pdfURL="https://ejemplo.com/de/url/que/no/existe.pdf"
sendMail $pdfURL $comunidad
}
function aragon {
comunidad="Aragon"
pdfFile=".boletin$comunidad.pdf"
mainURL="https://www.boa.aragon.es/PABOA/automa.htm"
todayURL=$(wget -q $mainURL -O - | grep -i -o "document.location.href=.*" | grep -Po '(?<=document.location.href=")[^"]*(?=")')
pdfURL1="https://www.boa.aragon.es/cgi-bin/EBOA/"
pdfURL2=$(wget -q $todayURL -O - | grep -i -o "<a .* title=\"Ver pdf del bolet&iacute;n completo.*</a>" -m 1 | grep -o -i "href=\".*type=pdf\"" | grep -Po '(?<=href=")[^"]*(?=")')
pdfURL="${pdfURL1}${pdfURL2}"
wget -q $pdfURL -O $pdfFile
if [ "$(pdftotext $pdfFile - | grep -i -E -n -3 "$keyWords" | tee .cpds | wc -l)" = 0 ]; then echo "0 resultados"; rm -rf .cpds .boletin*; exit; else sendMail $pdfURL $comunidad;fi
rm -rf .boletin*
}
function barcelona {
comunidad="Barcelona"
pdfFile=".boletin$comunidad.pdf"
pdfURL="https://portaldogc.gencat.cat/utilsEADOP/dogc2/dogc_es.pdf" # Apunta al último boletín
wget -q $pdfURL -O $pdfFile
if [ "$(pdftotext $pdfFile - | grep -i -E -n -3 "$keyWords" | tee .cpds | wc -l)" = 0 ]; then echo "0 resultados"; rm -rf .cpds .boletin*; exit; else sendMail $pdfURL $comunidad;fi
rm -rf .boletin*
}
function clamancha {
comunidad="CastillaLaMancha"
pdfFile=".boletin$comunidad.pdf"
mainURL="https://docm.jccm.es/docm"
pdfURL="$(echo $mainURL/$(wget -q $mainURL -O - | grep -i -A1 "descargaDiario" | grep -iE "pdf|rutaDocm|ruta" | awk '{ print $2 }' | cut -d "\"" -f 2 | cut -d "&" -f 1)&tipo=rutaDocm)"
wget -q --no-directories --content-disposition -e robots=off -A.pdf "$pdfURL&tipo=rutaDocm" -O $pdfFile
if [ "$(pdftotext $pdfFile - | grep -i -E -n -3 "$keyWords" | tee .cpds | wc -l)" = 0 ]; then echo "0 resultados"; rm -rf .cpds .boletin*; exit; else sendMail $pdfURL $comunidad;fi
rm -rf .boletin*
}
function extremadura {
comunidad="Extremadura"
pdfFile=".boletin$comunidad.pdf"
mainURL="https://doe.juntaex.es/ultimosdoe/mostrardoe.php?fecha="
mainURL+=$(date +"%Y%m%d")
mainURL+="t=o"
pdfURL1="https://doe.juntaex.es"
pdfURL2=$(wget -q $mainURL -O - | grep -i -o "<a class=\"enlace_dis\".*Descargar el DOE completo en formato PDF" | grep -o -i "/pdfs.*\.pdf")
pdfURL="${pdfURL1}${pdfURL2}"
wget -q $pdfURL -O $pdfFile
if [ "$(pdftotext $pdfFile - | grep -i -E -n -3 "$keyWords" | tee .cpds | wc -l)" = 0 ]; then echo "0 resultados"; rm -rf .cpds .boletin*; exit; else sendMail $pdfURL $comunidad;fi
rm -rf .boletin*
}
function madrid {
comunidad="Madrid"
pdfFile=".boletin$comunidad.pdf"
mainURL="https://bocm.es"
pdfURL=$(wget -q $mainURL -O - | grep -i -o "<a.*Descargar el boletín completo.*/a>" | grep -o -i "http.*\.PDF")
wget -q $pdfURL -O $pdfFile
if [ "$(pdftotext $pdfFile - | grep -i -E -n -3 "$keyWords" | tee .cpds | wc -l)" = 0 ]; then echo "0 resultados"; rm -rf .cpds .boletin*; exit; else sendMail $pdfURL $comunidad;fi
rm -rf .boletin*
}
function paisvasco {
comunidad="Euskadi"
pdfFile=".boletin$comunidad.pdf"
mainURL="https://www.euskadi.eus/web01-bopv/es/bopv2/datos/Ultimo.shtml"
pdfURL1="https://www.euskadi.eus/web01-bopv/es/bopv2/datos/"
pdfURL2=$(wget -q $mainURL -O - | grep -i -o "<li class=\"formatoPdf\"><a href=.*.pdf" | grep -i -o "20.*pdf")
pdfURL="${pdfURL1}${pdfURL2}"
wget -q $pdfURL -O $pdfFile
if [ "$(pdftotext $pdfFile - | grep -i -E -n -3 "$keyWords" | tee .cpds | wc -l)" = 0 ]; then echo "0 resultados"; rm -rf .cpds .boletin*; exit; else sendMail $pdfURL $comunidad;fi
rm -rf .boletin*
}
function valencia {
# boletín experimental actualmente
comunidad="Valencia"
pdfFile=".boletin$comunidad.pdf"
idDogv=$(cat .lastDogv)
mainURL="https://dogv.gva.es/datos/$(date +"%Y/%m/%d")/pdf/dogv_$(date +"%Y")_$idDogv"
mainURL="$(echo $mainURL)_es.pdf"
mainURLStatus=$(wget -NS "$mainURL" 2>&1 | grep "HTTP/" | awk '{print $2}')
until [ $mainURLStatus != 404 ]
do
mainURL="https://dogv.gva.es/datos/$(date +"%Y/%m/%d")/pdf/dogv_$(date +"%Y")_$idDogv"
mainURL="$(echo $mainURL)_es.pdf"
mainURLStatus=$(wget -NS "$mainURL" 2>&1 | grep "HTTP/" | awk '{print $2}')
let idDogv=$idDogv+1
sleep 1
done
echo $idDogv > .lastDogv
wget -q $mainURL -O $pdfFile
if [ "$(pdftotext $pdfFile - | grep -i -E -n -3 "$keyWords" | tee .cpds | wc -l)" = 0 ]; then echo "0 resultados"; rm -rf .cpds dogv_* .boletin*; exit; else sendMail $mainURL $comunidad;fi
rm -rf dogv_* .boletin*
}
function help {
echo -e "cpdAlerts $version\n"
echo "--aragon Alertas en Aragon"
echo "--barcelona Alertas en Barcelona"
echo "--clamancha Alertas en Castilla-La Mancha"
echo "--extremadura Alertas en Extremadura"
echo "--madrid Alertas en Madrid"
echo "--valencia Alertas en Valencia"
echo "--paisvasco Alertas en País Vasco"
echo "--test Test de Notificación Email"
echo -e "--help Muesta la ayuda\n"
}
function checkOpt {
if [ -z "$opt" ]; then help; fi
if [ "$opt" = "--help" ]; then help; fi
if [ "$opt" = "--test" ]; then testNotification; fi
if [ "$opt" = "--aragon" ]; then aragon; fi
if [ "$opt" = "--barcelona" ]; then barcelona; fi
if [ "$opt" = "--clamancha" ]; then clamancha; fi
if [ "$opt" = "--extremadura" ]; then extremadura; fi
if [ "$opt" = "--valencia" ]; then valencia; fi
if [ "$opt" = "--madrid" ]; then madrid; fi
if [ "$opt" = "--paisvasco" ]; then paisvasco; fi
if [ "$opt" = "--todo" ]; then aragon; barcelona; clamancha; extremadura; valencia; madrid; paisvasco; fi
}
function main() {
checkLaboralDay
checkOpt
}
main