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

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

Matheus Vianna
MatheusVianna

(usa Fedora)

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.


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

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

Matheus Vianna
MatheusVianna

(usa Fedora)

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

Matheus Vianna
MatheusVianna

(usa Fedora)

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]

Marcelo Oliver
msoliver

(usa Debian)

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
______________________________________________________________________






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts