#!/bin/bash POSITIONAL=() while [[ $# -gt 0 ]] do key="$1" case $key in -c|--certpath) CERTPATH="$2" shift # past argument shift # past value ;; -p|--nebulacertbinpath) NEBULACERTBINPATH="$2" shift # past argument shift # past value ;; -o|--outpath) OUTPATH="$2" shift # past argument shift # past value ;; *) # unknown option POSITIONAL+=("$1") # save it in an array for later shift # past argument ;; esac done set -- "${POSITIONAL[@]}" # restore positional parameters if [[ -n $1 ]]; then echo "Invalid Parameter(s) Entered: $1" exit fi DATETIME=$(date '+%Y%m%d-%H%M%S') NODENAME=$(${NEBULACERTBINPATH} print -path ${CERTPATH} -json | jq -s .[].details.name | sed 's/["]//g') #### TO-DO #### # Make NODEIPS an Array like NODEGROUPS NODEIPS=$(${NEBULACERTBINPATH} print -path ${CERTPATH} -json | jq -s --compact-output .[].details.ips | sed 's/[]["]//g') NODEGROUPS=$(${NEBULACERTBINPATH} print -path ${CERTPATH} -json | jq -s --compact-output .[].details.groups | sed 's/[]["]//g') # | sed 's/,/ /g')) CERTISCASTATUS=$(${NEBULACERTBINPATH} print -path ${CERTPATH} -json | jq -s --compact-output .[].details.isCa) # Create new file name variable NEWFILENAME="${NODENAME}_${DATETIME}" if [[ $CERTISCASTATUS == true ]]; then echo "Certificate is the root CA Certificate. Try again with a node certificate." exit fi if [[ $CERTISCASTATUS == false ]]; then echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" echo "Node Name: ${NODENAME}" echo "Node IPs: ${NODEIPS}" echo "Node Groups: ${NODEGROUPS[@]}" echo "Certificate isCa Status: ${CERTISCASTATUS}" echo "DateTime: ${DATETIME}" echo "NEWFILENAME: ${NEWFILENAME}" echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" ${NEBULACERTBINPATH} sign -groups ${NODEGROUPS[@]} -ip ${NODEIPS} -name ${NODENAME} -ca-crt ${OUTPATH}/ca.crt -ca-key ${OUTPATH}/ca.key -out-crt ${OUTPATH}/${NEWFILENAME}.crt -out-key ${OUTPATH}/${NEWFILENAME}.key fi