Pular para o conteúdo

Script para verificar dias restantes para expiração de um domínio [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Script para verificar dias restantes para expiração de um domínio [RESOLVIDO]

Enviado em 29/06/2020 - 00:11h

Estou trabalhando com uma máquina Debian 8 e preciso de um script que verifique o domínio (provavelmente com o comando whois) e me dê o output em dias restantes para esse domínio expirar, para que seja visualizado facilmente no Zabbix. Infelizmente, não entendo muito de como criar scripts e todos que eu tentei até então falharam. Alguém tem alguma dica ou pode me ajudar? Obrigado.

Responder tópico

2. Re: Script para verificar dias restantes para expiração de um domínio [RESOLVIDO]

Melhor resposta

Enviado em 29/06/2020 - 01:49h


MatheusVianna escreveu:

Estou trabalhando com uma máquina Debian 8 e preciso de um script que verifique o domínio (provavelmente com o comando whois) e me dê o output em dias restantes para esse domínio expirar, para que seja visualizado facilmente no Zabbix. Infelizmente, não entendo muito de como criar scripts e todos que eu tentei até então falharam. Alguém tem alguma dica ou pode me ajudar? Obrigado.

Boa noite Matheus.
Segue sugestão:
whois vivaolinux.com.br|awk '/expires:/ {print $2}'|sed -r 's/(.{4})(.{2})(.{2})/\1-\2-\3/'
2020-09-06
Ou
whois vivaolinux.com.br|awk '/expires:/ {print $2}'
20200906




______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________

3. Funciona perfeitamente

Enviado em 29/06/2020 - 09:53h

msoliver escreveu:

Boa noite Matheus.
Segue sugestão:
whois vivaolinux.com.br|awk '/expires:/ {print $2}'|sed -r 's/(.{4})(.{2})(.{2})/\1-\2-\3/'
2020-09-06
Ou
whois vivaolinux.com.br|awk '/expires:/ {print $2}'
20200906




______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


Muito obrigado pela ajuda, isso "indiretamente" resolveu outro problema meu que é o formato das datas, que antes ficava exposto de uma forma confusa. Porém eu ainda precisaria de um output numérico só com os dias restantes, como esse script de verificação de certificado SSL que encontrei.

  
data=`echo | openssl s_client -servername $1 -connect $1:443 2>/dev/null | openssl x509 -noout -enddate | sed -e 's#notAfter=##'`

ssldate=`date -d "${data}" '+%s'`

nowdate=`date '+%s'`

diff="$((${ssldate}-${nowdate}))"

echo $((${diff}/86400))


Pelo que entendi, ele compara a data de hoje com a data de expiração do certificado e faz a subtração. Tentei durante dias entender e fazer isso com o comando whois, mas não consegui :/

4. Resolvido

Enviado em 29/06/2020 - 12:36h

Consegui resolver o meu problema. Utilizei o script a seguir para ter o output somente em dias restantes para expiração. Dessa forma, fica bem fácil de criar um trigger para avisar quando o domínio estiver perto de expirar.

  
#!/bin/bash
domain=$1
expiration_days=$2

expiration_string=`whois "$domain" | egrep -i 'expires:|Registry Expiry Date:' | head -1 | awk '{print $NF}'`
if [ $? -ne 0 ]; then
echo "Erro ao executar o comando WHOIS para $domain - $expiration_string"
exit 1
fi

expiration_epoch=`date --date="$expiration_string" '+%s'`
rightnow_epoch=`date '+%s'`

seconds_left=`expr $expiration_epoch - $rightnow_epoch`
days_left=`expr $seconds_left / 86400`

echo "$days_left"
exit $rc


Obrigado e espero ter ajudado caso alguém veja esse tópico no futuro.

5. Re: Script para verificar dias restantes para expiração de um domínio [RESOLVIDO]

Enviado em 29/06/2020 - 16:47h

MatheusVianna escreveu:

msoliver escreveu:

Boa noite Matheus.
Segue sugestão:
whois vivaolinux.com.br|awk '/expires:/ {print $2}'|sed -r 's/(.{4})(.{2})(.{2})/\1-\2-\3/'
2020-09-06
Ou
whois vivaolinux.com.br|awk '/expires:/ {print $2}'
20200906




______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


Muito obrigado pela ajuda, isso "indiretamente" resolveu outro problema meu que é o formato das datas, que antes ficava exposto de uma forma confusa. Porém eu ainda precisaria de um output numérico só com os dias restantes, como esse script de verificação de certificado SSL que encontrei.

  
data=`echo | openssl s_client -servername $1 -connect $1:443 2>/dev/null | openssl x509 -noout -enddate | sed -e 's#notAfter=##'`

ssldate=`date -d "${data}" '+%s'`

nowdate=`date '+%s'`

diff="$((${ssldate}-${nowdate}))"

echo $((${diff}/86400))


Pelo que entendi, ele compara a data de hoje com a data de expiração do certificado e faz a subtração. Tentei durante dias entender e fazer isso com o comando whois, mas não consegui :/

Boa tarde Matheus,
Segue sugestão.
Informe somente o domínio como parâmetro.
#!/bin/bash
(($#==0)) && { echo -e "ERRO\nArgumento inválido";exit 1;}
data=$(whois $1|awk '/expires:/ {print $2}'|sed -r 's/(.{4})(.{2})(.{2})/\1-\2-\3/');
[ -z ${data} ] && { echo "Erro ao executar o comando WHOIS para $1";exit 1;}
dias=$(awk '{printf "%.2f" ,($1-$2)/$3}' <<< "$(date -d"${data}" +%s) $(date +%s) 86400");
stt=$(bc <<< "${dias}>0");
((${stt} == 1)) && echo "Faltam ${dias} dias para renovar o domínio" || echo "Renovação vencida há ${dias/-} dias"


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder