Browse Source

Added extra switch

Added a switch to enable users to automatically get a list of domains from their Lets Encrypt Live directory (lists all live certificates)
pull/1/head
MrSleeps 10 years ago
parent
commit
ad0f393183
1 changed files with 26 additions and 22 deletions
  1. +26
    -22
      checkssl

+ 26
- 22
checkssl View File

@ -2,25 +2,19 @@
# ---------------------------------------------------------------------------
# checkssl - checks ssl certs for a set of domains
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License at <http://www.gnu.org/licenses/> for
# more details.
# This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License at <http://www.gnu.org/licenses/> for # more details.
# Usage: checkssl [-h|--help] [-d|--debug] [-f|--file filename] [-s|--server stype]
# Usage: checkssl [-h|--help] [-d|--debug] [-f|--file filename] [-s|--server stype] [-l|--location]
# Revision history:
# 2015-12-05 Created (v0.1)
# 2015-12-05 Added the ability to automatically search for domains from the letsencrypt live directory (v0.2 - sleeps)
# ---------------------------------------------------------------------------
PROGNAME=${0##*/}
VERSION="0.1"
VERSION="0.2"
RENEW_ALERT="30" # set to number of days to be alerted for certificate renewal
@ -54,12 +48,11 @@ signal_exit() { # Handle trapped signals
}
usage() {
echo -e "Usage: $PROGNAME [-h|--help] [-d|--debug] [-f|--file filename] [-s|--server stype]"
echo -e "Usage: $PROGNAME [-h|--help] [-d|--debug] [-f|--file filename] [-s|--server stype] [-l|--location directory]"
}
log() {
echo "[$(date +%Y-%m-%d\ %H:%M:%S)] $*" >> ${PROGNAME}.log
}
echo "[$(date +%Y-%m-%d\ %H:%M:%S)] $*" >> ${PROGNAME}.log }
debug() {
if [[ "${_USE_DEBUG:-"0"}" -eq 1 ]]; then
@ -81,6 +74,9 @@ help_message() {
Where 'filename' is a file containing a list of domain names
-s, --server server_type
Where 'server_type' is the server type (cpanel, ISPconfig, apache2 ...)
-l, --location directory
Where 'directory' is where your lets encrypt live directory is
(typically /etc/letsencrypt/live/)
_EOF_
return
@ -103,6 +99,8 @@ while [[ -n $1 ]]; do
FILEARG=true; shift; FILE="$1" ;;
-s | --server)
SERVERARG=true; shift; STYPE="$1" ;;
-l | --location)
LOCATIONARG=true; shift; LOC="$1";;
-* | --*)
usage
error_exit "Unknown option $1" ;;
@ -114,7 +112,7 @@ done
# Main logic
if [[ ! $FILEARG && ! $SERVERARG ]]; then
if [[ ! $FILEARG && ! $SERVERARG && ! $LOCATIONARG ]]; then
help_message
graceful_exit
fi
@ -125,8 +123,7 @@ DATA_OUT=$(mktemp)
debug "created tmp files for input (${LIST_OF_DOMAINS}) and output (${DATA_OUT})"
echo "Domain|cert issued for|valid until|cert issued by| possible issues?" > $DATA_OUT
# check and inport file if specified on command line
if [ $FILEARG ]; then
# check and inport file if specified on command line if [ $FILEARG ]; then
if [ -f $FILE ]; then
cat $FILE >> $LIST_OF_DOMAINS
else
@ -135,8 +132,7 @@ if [ $FILEARG ]; then
fi
fi
# get a list of domains from server (if -s flag used)
if [ $SERVERARG ]; then
# get a list of domains from server (if -s flag used) if [ $SERVERARG ]; then
if [ "$STYPE" == "cpanel" ]; then
cat /etc/userdomains | cut -d":" -f 1 | grep "\." >> $LIST_OF_DOMAINS
elif [ "$STYPE" == "ISPconfig" ]; then
@ -147,6 +143,16 @@ if [ $SERVERARG ]; then
fi
fi
if [ $LOCATIONARG ]; then
LELOC=$LOC/*
for f in $LELOC; do
if [[ -d $f ]]; then
dir=$(basename "$f")
echo $dir >> $LIST_OF_DOMAINS
fi
done
fi
cat $LIST_OF_DOMAINS | while read -d $'\n\b' DOMAIN; do
PROBLEMS=""
debug " --------------- domain ${DOMAIN} ---------------------"
@ -177,11 +183,9 @@ cat $LIST_OF_DOMAINS | while read -d $'\n\b' DOMAIN; do
PROBLEMS=$(echo "${PROBLEMS}- certificate near renewal date")
fi
fi
printf "%s|%s|%s|%s|%s\n" "$DOMAIN" "$ISSUEDTO" "$ENDDATE" "$ISSUER" "$PROBLEMS">> $DATA_OUT
done
printf "%s|%s|%s|%s|%s\n" "$DOMAIN" "$ISSUEDTO" "$ENDDATE" "$ISSUER" "$PROBLEMS">> $DATA_OUT done
echo ""
cat $DATA_OUT | column -t -s"|"
graceful_exit

Loading…
Cancel
Save