summaryrefslogtreecommitdiffstats
path: root/base/scripts
diff options
context:
space:
mode:
authorMatthew Harmsen <mharmsen@redhat.com>2014-04-17 11:26:04 -0700
committerMatthew Harmsen <mharmsen@redhat.com>2014-04-17 11:26:04 -0700
commitce5a07f06f361040b14ed5b1622d816c7044a7ec (patch)
treea64b18df2e41aae215c1a94d6dcf9dc4224bc057 /base/scripts
parent611419fcd8a19c06ca651add93deb66bdd0c55d5 (diff)
downloadpki-ce5a07f06f361040b14ed5b1622d816c7044a7ec.tar.gz
pki-ce5a07f06f361040b14ed5b1622d816c7044a7ec.tar.xz
pki-ce5a07f06f361040b14ed5b1622d816c7044a7ec.zip
Added development tool to aid in verifying the following two PKI TRAC tickets:
* PKI TRAC Ticket #843 - Incorrect CLI argument parsing * PKI TRAC Ticket #918 - CLI commands does not return code '1' for the failures
Diffstat (limited to 'base/scripts')
-rwxr-xr-xbase/scripts/pkiclihelp310
1 files changed, 310 insertions, 0 deletions
diff --git a/base/scripts/pkiclihelp b/base/scripts/pkiclihelp
new file mode 100755
index 000000000..b9a2ed3ac
--- /dev/null
+++ b/base/scripts/pkiclihelp
@@ -0,0 +1,310 @@
+#!/bin/bash
+## BEGIN COPYRIGHT BLOCK
+## (C) 2014 Red Hat, Inc.
+## All rights reserved.
+## END COPYRIGHT BLOCK
+
+##################################################
+## Always switch into this current working ##
+## directory prior to script execution so that ##
+## all output is written to this directory ##
+##################################################
+
+cd `dirname $0`
+
+##################################################
+## Establish PKI CLI variables ##
+##################################################
+
+PKI=/usr/bin/pki
+
+PKI_OPTIONS=
+
+## To specify no log file, set 'PKI_CLI_LOGFILE=/dev/null'
+PKI_CLI_LOGFILE=`pwd`/pki_cli_help.log
+
+BANNER="\
+#############################################################################\n\
+#############################################################################\n\
+#############################################################################"
+
+PKI_CLI_SYSTEM_COMMAND_BANNER="\
+#############################################################################\n\
+### Top-Level PKI CLI System Command Usage ###\n\
+#############################################################################"
+
+PKI_CLI_MODULES_BANNER="\
+#############################################################################\n\
+### Top-Level PKI CLI Module Commands ###\n\
+#############################################################################"
+
+
+
+##################################################
+## Gather PKI CLI Modules and Commands ##
+##################################################
+
+## NOTE: This non-recursive script currently only runs
+## against module commands of the following forms:
+##
+## * module (e. g. - 'ca')
+## * module-command (e. g. - 'ca-group')
+## * module-command-subcommand (e. g. - 'ca-group-member')
+## * module-command-subcommand-sublevel (e. g. - 'ca-group-member-show')
+
+## List 'cmd's before 'module's since both 'cmd's and 'module's will
+## be tested, and the 'module' may well be a substring of the 'cmd'
+## (e. g. - cmd 'ca-group-member' contains module 'ca')
+PKI_SUBCOMMANDS=( \
+group-member \
+user-cert \
+user-membership \
+ca-group-member \
+ca-user-cert \
+ca-user-membership \
+ca \
+kra-group-member \
+kra-user-cert \
+kra-user-membership \
+kra \
+ocsp-group-member \
+ocsp-user-cert \
+ocsp-user-membership \
+ocsp \
+tks-group-member \
+tks-user-cert \
+tks-user-membership \
+tks \
+tps-group-member \
+tps-profile-mapping \
+tps-user-cert \
+tps-user-membership \
+tps \
+)
+
+## Gather the list of modules by:
+## * invoking '${PKI}',
+## * ignoring the 'usage' line,
+## * ignoring the ' -' options lines,
+## * ignoring the ' ' options lines,
+## * ignoring the blank lines,
+## * ignoring the 'Commands:' line,
+## * removing the initial space before each module, and
+## * removing the description after each module
+
+PKI_CLI_MODULES=(`${PKI} | grep -vE '(^usage|^ -|^ |^$|^Commands:)' | cut -b2- | cut -d' ' -f1`)
+
+
+
+##################################################
+## Always start with a fresh log file ##
+##################################################
+
+cat /dev/null > ${PKI_CLI_LOGFILE}
+
+
+
+##################################################
+## Process Help for Top-Level PKI CLI commands ##
+## logging output into the specified log file ##
+##################################################
+
+printf "${PKI_CLI_SYSTEM_COMMAND_BANNER}\n"
+printf "${PKI_CLI_SYSTEM_COMMAND_BANNER}\n" >> ${PKI_CLI_LOGFILE} 2>&1
+printf "${TOP_LEVEL_PKI_CLI_COMMANDS}\n\n\n" >> ${PKI_CLI_LOGFILE} 2>&1
+## Sans "--help" option
+printf " Processing '${PKI} ${PKI_OPTIONS}' . . . "
+printf "# ${PKI} ${PKI_OPTIONS}\n" >> ${PKI_CLI_LOGFILE} 2>&1
+${PKI} ${PKI_OPTIONS} >> ${PKI_CLI_LOGFILE} 2>&1
+rv=$?
+if [ ${rv} -eq 0 ] ; then
+ printf "\nReturn Code: '${rv}' (SUCCESS)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "SUCCESS.\n"
+else
+ printf "\nReturn Code: '${rv}' (FAILURE)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "FAILURE.\n"
+fi
+printf "\n\n\n${BANNER}\n\n\n" >> ${PKI_CLI_LOGFILE} 2>&1
+## Specifying "--help" option
+printf " Processing '${PKI} ${PKI_OPTIONS} --help' . . . "
+printf "# ${PKI} ${PKI_OPTIONS} --help\n" >> ${PKI_CLI_LOGFILE} 2>&1
+${PKI} ${PKI_OPTIONS} --help >> ${PKI_CLI_LOGFILE} 2>&1
+rv=$?
+if [ ${rv} -eq 0 ] ; then
+ printf "\nReturn Code: '${rv}' (SUCCESS)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "SUCCESS.\n"
+else
+ printf "\nReturn Code: '${rv}' (FAILURE)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "FAILURE.\n"
+fi
+printf "\n\n\n${BANNER}\n\n\n" >> ${PKI_CLI_LOGFILE} 2>&1
+## Specifying "help" option
+printf " Processing '${PKI} ${PKI_OPTIONS} help' . . . "
+printf "# ${PKI} ${PKI_OPTIONS} help\n" >> ${PKI_CLI_LOGFILE} 2>&1
+${PKI} ${PKI_OPTIONS} help >> ${PKI_CLI_LOGFILE} 2>&1
+rv=$?
+if [ ${rv} -eq 0 ] ; then
+ printf "\nReturn Code: '${rv}' (SUCCESS)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "SUCCESS.\n"
+else
+ printf "\nReturn Code: '${rv}' (FAILURE)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "FAILURE.\n"
+fi
+printf "\n\n\n${BANNER}\n\n\n" >> ${PKI_CLI_LOGFILE} 2>&1
+
+
+
+##################################################
+## Process Help for Top-Level PKI CLI modules ##
+## logging output into the specified log file ##
+##################################################
+
+printf "${PKI_CLI_MODULES_BANNER}\n"
+printf "${PKI_CLI_MODULES_BANNER}\n\n\n" >> ${PKI_CLI_LOGFILE} 2>&1
+for i in ${!PKI_CLI_MODULES[*]}; do
+ cmd=${PKI_CLI_MODULES[${i}]}
+ ## Sans "--help" option
+ printf " Processing '${PKI} ${PKI_OPTIONS} ${cmd}' . . . "
+ printf "# ${PKI} ${PKI_OPTIONS} ${cmd}\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ ${PKI} ${PKI_OPTIONS} ${cmd} >> ${PKI_CLI_LOGFILE} 2>&1
+ rv=$?
+ if [ ${rv} -eq 0 ] ; then
+ printf "\nReturn Code: '${rv}' (SUCCESS)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "SUCCESS.\n"
+ else
+ printf "\nReturn Code: '${rv}' (FAILURE)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "FAILURE.\n"
+ fi
+ printf "\n\n\n${BANNER}\n\n\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ ## Specifying "--help" option
+ printf " Processing '${PKI} ${PKI_OPTIONS} ${cmd} --help' . . . "
+ printf "# ${PKI} ${PKI_OPTIONS} ${cmd} --help\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ ${PKI} ${PKI_OPTIONS} ${cmd} --help >> ${PKI_CLI_LOGFILE} 2>&1
+ rv=$?
+ if [ ${rv} -eq 0 ] ; then
+ printf "\nReturn Code: '${rv}' (SUCCESS)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "SUCCESS.\n"
+ else
+ printf "\nReturn Code: '${rv}' (FAILURE)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "FAILURE.\n"
+ fi
+ printf "\n\n\n${BANNER}\n\n\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ ## Specifying "help" option
+ printf " Processing '${PKI} ${PKI_OPTIONS} help ${cmd}' . . . "
+ printf "# ${PKI} ${PKI_OPTIONS} help ${cmd}\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ ${PKI} ${PKI_OPTIONS} help ${cmd} >> ${PKI_CLI_LOGFILE} 2>&1
+ rv=$?
+ if [ ${rv} -eq 0 ] ; then
+ printf "\nReturn Code: '${rv}' (SUCCESS)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "SUCCESS.\n"
+ else
+ printf "\nReturn Code: '${rv}' (FAILURE)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "FAILURE.\n"
+ fi
+ printf "\n\n\n${BANNER}\n\n\n" >> ${PKI_CLI_LOGFILE} 2>&1
+done
+
+
+
+##################################################
+## Process Help for PKI CLI Command Modules ##
+## logging output into the specified log file ##
+##################################################
+
+for i in ${!PKI_CLI_MODULES[*]}; do
+ module=${PKI_CLI_MODULES[${i}]}
+ if [ "${module}" = "help" ] ; then
+ continue;
+ fi
+ ## Gather the list of commands for each module by:
+ ## * invoking '${PKI} <module>',
+ ## * ignoring the 'Commands:' header,
+ ## * removing the initial space before each command, and
+ ## * removing the description after each command
+ commands=(`${PKI} ${module} | grep -v Commands: | cut -b2- | cut -d' ' -f1`)
+PKI_CLI_COMMAND_MODULES_BANNER="\
+#############################################################################\n\
+### PKI CLI ${module} Commands Usage\n\
+#############################################################################"
+ printf "${PKI_CLI_COMMAND_MODULES_BANNER}\n"
+ printf "${PKI_CLI_COMMAND_MODULES_BANNER}\n\n\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ for j in ${!commands[*]}; do
+ cmd=${commands[${j}]}
+ #############################
+ ## Specifying "--help" option
+ #############################
+ printf " Processing '${PKI} ${PKI_OPTIONS} ${cmd} --help' . . . "
+ printf "# ${PKI} ${PKI_OPTIONS} ${cmd} --help\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ ${PKI} ${PKI_OPTIONS} ${cmd} --help >> ${PKI_CLI_LOGFILE} 2>&1
+ rv=$?
+ if [ ${rv} -eq 0 ] ; then
+ printf "\nReturn Code: '${rv}' (SUCCESS)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "SUCCESS.\n"
+ else
+ printf "\nReturn Code: '${rv}' (FAILURE)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "FAILURE.\n"
+ fi
+ printf "\n\n\n${BANNER}\n\n\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ ######################################################################
+ ## check to see if the cmd (first) or module (second) has a subcommand
+ ######################################################################
+ for subcommand in ${!PKI_SUBCOMMANDS[*]}; do
+ if [ "${cmd}" = "${PKI_SUBCOMMANDS[${subcommand}]}" ] ||
+ [ "${module}" = "${PKI_SUBCOMMANDS[${subcommand}]}" ] ; then
+ ## Gather the list of subcommands for each cmd/module by:
+ ## * invoking '${PKI} <module>',
+ ## * ignoring the 'Commands:' header,
+ ## * removing the initial space before each command, and
+ ## * removing the description after each command
+ subcmds=(`${PKI} ${cmd} | grep -v Commands: | cut -b2- | cut -d' ' -f1`)
+ for k in ${!subcmds[*]}; do
+ subcmd=${subcmds[${k}]}
+ #############################
+ ## Specifying "--help" option
+ #############################
+ printf " Processing '${PKI} ${PKI_OPTIONS} ${subcmd} --help' . . . "
+ printf "# ${PKI} ${PKI_OPTIONS} ${subcmd} --help\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ ${PKI} ${PKI_OPTIONS} ${subcmd} --help >> ${PKI_CLI_LOGFILE} 2>&1
+ rv=$?
+ if [ ${rv} -eq 0 ] ; then
+ printf "\nReturn Code: '${rv}' (SUCCESS)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "SUCCESS.\n"
+ else
+ printf "\nReturn Code: '${rv}' (FAILURE)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "FAILURE.\n"
+ fi
+ printf "\n\n\n${BANNER}\n\n\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ ######################################################
+ ## check to see if the subcmd has yet another sublevel
+ ######################################################
+ for sublevel in ${!PKI_SUBCOMMANDS[*]}; do
+ if [ "${subcmd}" = "${PKI_SUBCOMMANDS[${sublevel}]}" ] ; then
+ sublvls=(`${PKI} ${subcmd} | grep -v Commands: | cut -b2- | cut -d' ' -f1`)
+ for m in ${!sublvls[*]}; do
+ sublvl=${sublvls[${m}]}
+ #############################
+ ## Specifying "--help" option
+ #############################
+ printf " Processing '${PKI} ${PKI_OPTIONS} ${sublvl} --help' . . . "
+ printf "# ${PKI} ${PKI_OPTIONS} ${sublvl} --help\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ ${PKI} ${PKI_OPTIONS} ${sublvl} --help >> ${PKI_CLI_LOGFILE} 2>&1
+ rv=$?
+ if [ ${rv} -eq 0 ] ; then
+ printf "\nReturn Code: '${rv}' (SUCCESS)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "SUCCESS.\n"
+ else
+ printf "\nReturn Code: '${rv}' (FAILURE)\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ printf "FAILURE.\n"
+ fi
+ printf "\n\n\n${BANNER}\n\n\n" >> ${PKI_CLI_LOGFILE} 2>&1
+ done
+ break;
+ fi
+ done
+ done
+ break;
+ fi
+ done
+ done
+done
+