Browse Source

updated after using shellcheck to maintain a better coding standard

pull/4/head
srvrco 10 years ago
parent
commit
7666381cea
1 changed files with 30 additions and 27 deletions
  1. +30
    -27
      checkssl

+ 30
- 27
checkssl View File

@ -64,7 +64,7 @@ usage() {
}
log() {
echo "[$(date +%Y-%m-%d\ %H:%M:%S)] $*" >> ${PROGNAME}.log
echo "[$(date +%Y-%m-%d\ %H:%M:%S)] $*" >> "${PROGNAME}.log"
}
debug() {
@ -146,18 +146,18 @@ fi
LIST_OF_DOMAINS=$(mktemp)
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
echo "Domain|cert issued for|valid until|cert issued by| possible issues?" > "$DATA_OUT"
# use name name from command line if specified
if [ $DOMAINARG ]; then
echo "$DNAME" >> $LIST_OF_DOMAINS
echo "$DNAME" >> "$LIST_OF_DOMAINS"
fi
# check and inport file if specified on command line
if [ $FILEARG ]; then
if [ -f $FILE ]; then
cat $FILE >> $LIST_OF_DOMAINS
if [ -f "$FILE" ]; then
cat "$FILE" >> "$LIST_OF_DOMAINS"
else
echo "$FILE not found"
graceful_exit
@ -167,30 +167,32 @@ fi
# 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
cut -d":" -f 1 < /etc/userdomains | grep "\." >> "$LIST_OF_DOMAINS"
elif [ "$STYPE" == "ISPconfig" ]; then
apache2ctl -S | grep namevhost | awk '{print $4}' | sort | uniq >> $LIST_OF_DOMAINS
apache2ctl -S | grep namevhost | awk '{print $4}' | sort | uniq >> "$LIST_OF_DOMAINS"
else
echo "unknown server type currently"
graceful_exit
fi
fi
# read directory names as domains in given directory ( format used by letsencrypt and getssl )
if [ $LOCATIONARG ]; then
LELOC=$LOC/*
for f in $LELOC; do
if [[ -d $f ]]; then
dir=$(basename "$f")
echo $dir >> $LIST_OF_DOMAINS
fi
done
for f in ${LOC}/*; do
if [ -d "$f" ]; then
debug "Checking $dir"
dir=$(basename "$f")
echo "$dir" >> "$LIST_OF_DOMAINS"
fi
done
fi
cat $LIST_OF_DOMAINS | while read -d $'\n\b' DOMAIN; do
if [ ! -z $DOMAIN ]; then
# read domains from file
while IFS= read -r DOMAIN; do
if [ ! -z "$DOMAIN" ]; then
PROBLEMS=""
debug " --------------- domain ${DOMAIN} ---------------------"
CERTINFO=$(echo | openssl s_client -servername ${DOMAIN} -connect ${DOMAIN}:443 2>/dev/null | openssl x509 2>/dev/null)
CERTINFO=$(echo | openssl s_client -servername "${DOMAIN}" -connect "${DOMAIN}:443" 2>/dev/null | openssl x509 2>/dev/null)
ISSUEDTO=$(echo "$CERTINFO" | openssl x509 -noout -subject 2>/dev/null|cut -d= -f 3-)
[[ -z $ISSUEDTO ]] && ISSUEDTO="-"
debug "$ISSUEDTO"
@ -205,10 +207,10 @@ cat $LIST_OF_DOMAINS | while read -d $'\n\b' DOMAIN; do
PROBLEMS=$(echo "${PROBLEMS}- no certificate found")
else
ALT_NAMES=$(echo "$CERTINFO" | openssl x509 -noout -text 2>/dev/null| grep "Subject Alternative Name" -A2 |grep -Eo "DNS:[a-zA-Z 0-9.]*" | cut -c 5-)
if [ "$(echo "$ALT_NAMES" | grep ^${DOMAIN})" == "${DOMAIN}" ]; then
ISSUEDTO=$(echo "${DOMAIN} (alt)")
if [[ "$(echo "$ALT_NAMES" | grep "^${DOMAIN}")" == "${DOMAIN}" ]]=; then
ISSUEDTO="${DOMAIN} (alt)"
else
PROBLEMS=$(echo "${PROBLEMS}- possible name mismatch")
PROBLEMS="${PROBLEMS}- possible name mismatch"
fi
fi
fi
@ -217,19 +219,20 @@ 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
printf "%s|%s|%s|%s|%s\n" "$DOMAIN" "$ISSUEDTO" "$ENDDATE" "$ISSUER" "$PROBLEMS">> "$DATA_OUT"
fi
done
done < "$LIST_OF_DOMAINS"
if [[ $RENEWARG ]]; then
grep "certificate near renewal date" $DATA_OUT | awk -F"|" '{print $1}'
grep "certificate near renewal date" "$DATA_OUT" | awk -F"|" '{print $1}'
elif [[ $COMMANDARG ]]; then
for DOMAIN in $(grep "certificate near renewal date" $DATA_OUT | awk -F"|" '{print $1}'); do
$RUNCOMMAND $DOMAIN
done
# read list of domains needing renewal and pass to relevent RUNCOMMAND
while IFS= read -r DOMAIN; do
$RUNCOMMAND "$DOMAIN"
done < <(grep "certificate near renewal date" < "$DATA_OUT" | awk -F"|" '{print $1}')
else
echo ""
cat $DATA_OUT | column -t -s"|"
column -t -s"|" < "$DATA_OUT"
fi
graceful_exit

Loading…
Cancel
Save