dilan1998
(usa Debian)
Enviado em 10/11/2021 - 16:39h
Opa, bom *!
Estou fazendo um script para monitorar validade de certificados do letsencrypt, vou monitorar via Zabbix as saidas de comaparação, não entendo de programação, já tentei declarando arrays, tentei com Case, mas não cheguei a uma solução.
O intuito é que este script se aplique a diversos sites que vão ser monitorados.
Ele verifica a validade do certificado e emite uma saida positiva caso tenha vencido, mas não quero só com um único site e sim com mais de 30, como aplicar a variável $pagina a todo script quantas vezes for necessário segue o script
#!/bin/bash
#Variáveis
LANG=en_AU.utf8
pidfile="/var/run/"$(echo $this | cut -d. -f1)".pid"
avisoprevio=`date +%b:%d:%Y -d "5 days"`
datahoje=`date +%b:%d:%Y`
pagina=www.google.com
verificazero=`echo |openssl s_client -connect $pagina:443 2>/dev/null | openssl x509 -noout -dates | grep notAfter= | awk -F "=" '{print $2}' | awk '{print $1":"$2":"$4}' | wc -w`
if [ $verificazero -eq 1 ]
then datacert=`echo |openssl s_client -connect $pagina:443 2>/dev/null | openssl x509 -noout -dates | grep notAfter= | awk -F "=" '{print $2}' | awk '{print $1":0"$2":"$4}'`
else datacert=`echo |openssl s_client -connect $pagina:443 2>/dev/null | openssl x509 -noout -dates | grep notAfter= | awk -F "=" '{print $2}' | awk '{print $1":"$2":"$4}'`
fi ;
#Processamento
#Verifica se o dia do mês esta no formato 01-09 caso não o processamento o formata
#Verifcação de certificados dos dias 01 a 09 do mês
testedata=`date +%b:%d:%Y -d "88 days"`
if test -d /var/expira.cert;
then echo "OK";
else mkdir -p /var/expira.cert
fi;
if [ $datacert = $testedata ];
then echo "1" > /var/expira.cert/$pagina
else echo "0" > /var/expira.cert/$pagina
fi ;
echo $datacert
# Verifica se o script está rodando
if [ -e $pidfile ] ; then
pid=`cat $pidfile`
if ps cax | grep $pid > /dev/null ; then
# Script já está rodando, sai
echo "script PID $pid já está em execução. Abortando."
exit 126
fi
fi
# Registra o PID do script
echo "$$" > $pidfile ;
pid=$$ ;
exit 0