expiryCheck.sh 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #!/bin/bash
  2. EXPIRATIONDAYS=14
  3. OUTPUTBUFFER=""
  4. DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd -P )"
  5. cd ${DIR}
  6. checkCertificate () {
  7. OUTPUT=""
  8. CERTIFICATE=$@
  9. STARTNOTIFICATIONDATE=$(date +%s)
  10. EXPIRYNOTIFICATIONDATE=$(($(date +%s) + (86400*${EXPIRATIONDAYS})))
  11. SUBJECT=$(openssl x509 -in "${CERTIFICATE}" -noout -text | grep "Subject:" | sed 's/^.*CN[ ]*=[ ]*\([^,]*\).*$/\1/')
  12. STARTDATE=$(openssl x509 -in "${CERTIFICATE}" -noout -text | grep 'Not Before' | awk '{printf "%s %.2d %s %s\n",$3,$4,$6,$5}')
  13. STARTDATENUMERIC=$(date -d "${STARTDATE}" '+%s');
  14. EXPIRATIONDATE=$(openssl x509 -in "${CERTIFICATE}" -noout -text | grep 'Not After' | awk '{printf "%s %.2d %s %s\n",$4,$5,$7,$6}')
  15. EXPIRATIONDATENUMERIC=$(date -d "${EXPIRATIONDATE}" '+%s');
  16. if [ ${STARTNOTIFICATIONDATE} -lt ${STARTDATENUMERIC} ]
  17. then
  18. WARNING=true
  19. OUTPUT="\tOn ${STARTDATE}, the Certificate for \"${SUBJECT}\" will become valid\n"
  20. fi
  21. if [ ${EXPIRYNOTIFICATIONDATE} -gt ${EXPIRATIONDATENUMERIC} ]
  22. then
  23. WARNING=true
  24. OUTPUT="\tOn ${EXPIRATIONDATE}, the Certificate for \"${SUBJECT}\" will expire\n"
  25. fi
  26. }
  27. for DIRECTORY in ./*/
  28. do
  29. DIRECTORY=${DIRECTORY%*/}
  30. DIRECTORY=${DIRECTORY:2}
  31. if [ "${DIRECTORY}" != "openssl" ]; then
  32. TEMPORARYBUFFER=""
  33. cd "${DIRECTORY}"
  34. for CERTIFICATE in ./*.crt
  35. do
  36. WARNING=false
  37. if [[ -f "${CERTIFICATE}" ]]
  38. then
  39. checkCertificate ${CERTIFICATE}
  40. if [ "${WARNING}" = true ]; then
  41. TEMPORARYBUFFER+=${OUTPUT}
  42. fi
  43. fi
  44. done
  45. if [ ! -z "${TEMPORARYBUFFER}" ]; then
  46. OUTPUTBUFFER+="${DIRECTORY}:\n"
  47. OUTPUTBUFFER+=${TEMPORARYBUFFER}
  48. fi
  49. cd - > /dev/null
  50. fi
  51. done
  52. echo -e ${OUTPUTBUFFER}