Ajuda com script (array)

1. Ajuda com script (array)

Dilan Severino de Oliveira
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





  


2. Re: Ajuda com script (array)

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 10/11/2021 - 23:47h

dilan1998 escreveu:

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

Boa noite Dilan.
Segue sugestão:
#!/bin/bash
lin='----------------------------\n';
murl=("www.google.com" "uol.com.br" "ig.com.br" "terra.com.br" "vivaolinux.com.br" "globo.com" "debian.org");

#Percorre a Matriz e executa o comando:
for ((n=0;n<${#murl[@]};n++)) {
printf "N: $n ${murl[$n]}\n";
echo|openssl s_client -connect ${murl[$n]}:443 2>/dev/null|openssl x509 -noout -dates
printf " ${lin}";
}



______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



3. Ajuda com script (array)

Dilan Severino de Oliveira
dilan1998

(usa Debian)

Enviado em 12/11/2021 - 08:49h


Obrigado, funcionou agora é so implementar, vou deixar o questão em aberto, para postar o resultado e vou colocar seu nome dos agradecimentos!!!


4. Agradecimento!

Dilan Severino de Oliveira
dilan1998

(usa Debian)

Enviado em 22/11/2021 - 13:30h

Olá msoliver, não consegui com array, mas com bastante gambiarra meu script está 100% funcional.
Segue o github
https://github.com/dilandehonbra/vrcert.sh/tree/main/Vrcert.install
Obs: não poderiam faltar suas linhas lá por isso adicionei a opção --listcerts
https://github.com/dilandehonbra/vrcert.sh/blob/main/Vrcert.install/vrcert/vrcert.scripts/checklist

com um sed's eu adiciono todas htmls cadastradas e trago da maneira que seu script me retorna, muito obrigado!!!


5. Re: Ajuda com script (array)

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/11/2021 - 17:26h

Por nada Dilan.
Se marcar a Melhor Resposta, também ficarei muito agradecido.


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts