Explicação: Estou brincando um pouco com um script que ajuda a notificar o usuário sobre a expiração do certificado SSL. Se o certificado tiver menos de 30 dias para expirar, isso notificará o usuário, caso contrário, não faça nada.
Mas por algum motivo estranho validando com uma constante maior, até os emails estão enviando, e isso não deve acontecer.
Este é o código:
#!/bin/ksh
legend="The next certificate almost expires.\n URL: url.com "
count=30
daysleft=$(./ssl-cert-check -d /etc/ssl/certs/cert.cer | awk '{print $6}' | tail -n 1);
#daysleft=50 #Constant to do some test
sendnot=$(echo $legend | mail -s "url.com SSL cert Expiration" [email protected] < <(./ssl-cert-check -d /etc/ssl/certs/cert.cer))
if [[ $daysleft -lt $count ]];
then
echo "Sending note"
echo $sendnot
else
echo "Doing nothing..."
fi
Fazendo teste com daysleft
constante, o comando funciona; mas mesmo assim está enviando as notas para o usuário.
Editar: A saída de:
./ssl-cert-check -d /etc/ssl/certs/cert.cer | awk '{print $6}' | tail -n 1
is 9
Qualquer dúvida ou comentário estarei pronto para atender. Cumprimentos!!
Está linha:
executa os comandos
echo
,mail
e./ssl-cert-check
ali mesmo, e captura a saída de todo o lote, ou seja, a saída demail
, e a atribui na variávelsendnot
. É por isso que você recebe o e-mail independentemente da instrução if . Além disso,mail
provavelmente não produz muito aqui, portanto, usar a substituição de comando parece desnecessário.Se você quiser apenas armazenar um comando para uso posterior, torne-o uma função.
(
$1
seria o primeiro argumento para a função.)Além disso, há outro problema com esse comando: você está usando um pipe e um redirecionamento de entrada para
mail
. Você não pode conectar duas coisas diferentes à entrada padrão de um comando, portanto, apenas uma se aplica. Com vários redirecionamentos, seria o último que permaneceria em vigor; com um pipe e um redirecionamento, é o redirecionamento.Então seu comando lá é praticamente igual a:
ou seja, o
echo
realmente não faz nada.Se você quiser concatenar as saídas dos dois comandos, faça algo assim: