From c1fbe6394f75ebd1cef5cc021ec0e35c4eac7145 Mon Sep 17 00:00:00 2001 From: Jeremy Lecour Date: Wed, 7 Oct 2020 20:50:17 +0200 Subject: [PATCH] Add "version" and extract "help" options --- CHANGELOG.md | 3 +++ bkctld | 33 +++++++++++++++++++++++++++------ lib/bkctld-check-incs | 4 ++++ lib/bkctld-check-jails | 2 +- lib/bkctld-check-last-incs | 4 ++++ lib/bkctld-check-setup | 2 +- lib/bkctld-firewall | 2 +- lib/bkctld-help | 22 ---------------------- lib/bkctld-init | 2 +- lib/bkctld-ip | 2 +- lib/bkctld-is-on | 2 +- lib/bkctld-key | 2 +- lib/bkctld-port | 2 +- lib/bkctld-reload | 2 +- lib/bkctld-remove | 2 +- lib/bkctld-restart | 2 +- lib/bkctld-start | 2 +- lib/bkctld-status | 2 +- lib/bkctld-stop | 2 +- lib/bkctld-sync | 2 +- lib/bkctld-update | 2 +- lib/bkctld-upgrade-config | 6 +++--- lib/includes | 37 +++++++++++++++++++++++++++++++++++++ 23 files changed, 94 insertions(+), 47 deletions(-) delete mode 100755 lib/bkctld-help diff --git a/CHANGELOG.md b/CHANGELOG.md index a743dcd..20fa481 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +* bkctld: add a [-V|--version] option to display release number +* bkctld: add a [-h|--help|-?] option to display help message + ### Changed ### Deprecated diff --git a/bkctld b/bkctld index 864b4ed..03342a8 100755 --- a/bkctld +++ b/bkctld @@ -34,9 +34,30 @@ fi # shellcheck source=lib/includes . "${LIBDIR}/includes" +# Parse options +# based on https://gist.github.com/deshion/10d3cb5f88a21671e17a +while :; do + case $1 in + -h|-\?|--help) + show_help + exit 0 + ;; + -V|--version) + show_version + exit 0 + ;; + *) + # Default case: If no more options then break out of the loop. + break + ;; + esac + + shift +done + subcommand="${1:-}" case "${subcommand}" in - "inc" | "rm" | "check-jails" | "check-setup" | "stats" | "help" | "list") + "inc" | "rm" | "check-jails" | "check-setup" | "stats" | "list") "${LIBDIR}/bkctld-${subcommand}" ;; "check") @@ -50,14 +71,14 @@ case "${subcommand}" in elif [ "${option}" = "last" ]; then "${LIBDIR}/bkctld-check-last-incs" else - "${LIBDIR}/bkctld-help" + show_help exit 1 fi ;; "init" | "is-on") jail_name="${2:-}" if [ -z "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" + show_help exit 1 else "${LIBDIR}/bkctld-${subcommand}" "${jail_name}" @@ -67,7 +88,7 @@ case "${subcommand}" in jail_name="${2:-}" option="${3:-}" if [ "${jail_name}" = "all" ] || [ -z "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" + show_help exit 1 else "${LIBDIR}/bkctld-${subcommand}" "${jail_name}" "${option}" @@ -80,7 +101,7 @@ case "${subcommand}" in "${LIBDIR}/bkctld-${subcommand}" "${jail}" done elif [ -z "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" + show_help exit 1 else "${LIBDIR}/bkctld-${subcommand}" "${jail_name}" @@ -97,7 +118,7 @@ case "${subcommand}" in fi ;; *) - "${LIBDIR}/bkctld-help" + show_help exit 1 ;; esac diff --git a/lib/bkctld-check-incs b/lib/bkctld-check-incs index a378bb5..d862e70 100755 --- a/lib/bkctld-check-incs +++ b/lib/bkctld-check-incs @@ -1,4 +1,8 @@ #!/bin/sh +# +# Run check on all expected incs of all jails +# Usage: check-incs all +# set -u diff --git a/lib/bkctld-check-jails b/lib/bkctld-check-jails index 80981f5..531ab27 100755 --- a/lib/bkctld-check-jails +++ b/lib/bkctld-check-jails @@ -1,7 +1,7 @@ #!/bin/sh # # Run check on jails (NRPE output) -# Usage: check +# Usage: check-jails # # shellcheck source=./includes diff --git a/lib/bkctld-check-last-incs b/lib/bkctld-check-last-incs index 9f64d5b..c73e302 100755 --- a/lib/bkctld-check-last-incs +++ b/lib/bkctld-check-last-incs @@ -1,4 +1,8 @@ #!/bin/sh +# +# Run check on the last inc of all jails +# Usage: check-incs last +# set -u diff --git a/lib/bkctld-check-setup b/lib/bkctld-check-setup index edfe9db..a66b357 100755 --- a/lib/bkctld-check-setup +++ b/lib/bkctld-check-setup @@ -1,7 +1,7 @@ #!/bin/sh # # Run check on jails (NRPE output) -# Usage: check +# Usage: check-setup # # shellcheck source=./includes diff --git a/lib/bkctld-firewall b/lib/bkctld-firewall index 225a465..2c1293f 100755 --- a/lib/bkctld-firewall +++ b/lib/bkctld-firewall @@ -10,7 +10,7 @@ LIBDIR="$(dirname $0)" && . "${LIBDIR}/includes" jail_name="${1:?}" if [ -z "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" && exit 1 + show_help && exit 1 fi jail_path=$(jail_path "${jail_name}") diff --git a/lib/bkctld-help b/lib/bkctld-help deleted file mode 100755 index 9bfb0c6..0000000 --- a/lib/bkctld-help +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -# -# Print this help -# Usage: help -# - -# shellcheck source=./includes -LIBDIR="$(dirname $0)" && . "${LIBDIR}/includes" - -cat < [options] -Subcommands: -EOF - -for subcommand in ${LIBDIR}/bkctld-*; do - name=$(basename "${subcommand}"|sed 's/^bkctld-//') - desc=$(grep -E "^#" "${subcommand}"|sed -n '3p'|sed "s/^# //") - usage=$(grep -E "^# Usage: ${name}" "${subcommand}"|sed "s/^# Usage: ${name}//") - printf " %- 10s %- 30s %- 40s\n" "${name}" "${usage}" "${desc}" -done - -printf "\n" diff --git a/lib/bkctld-init b/lib/bkctld-init index 2625ca3..a7dec49 100755 --- a/lib/bkctld-init +++ b/lib/bkctld-init @@ -9,7 +9,7 @@ LIBDIR="$(dirname $0)" && . "${LIBDIR}/includes" jail_name="${1:?}" if [ -z "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" && exit 1 + show_help && exit 1 fi jail_path=$(jail_path "${jail_name}") diff --git a/lib/bkctld-ip b/lib/bkctld-ip index cb0e60c..dae1913 100755 --- a/lib/bkctld-ip +++ b/lib/bkctld-ip @@ -11,7 +11,7 @@ jail_name="${1:?}" ip="${2:-}" if [ ! -n "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" && exit 1 + show_help && exit 1 fi jail_path=$(jail_path "${jail_name}") diff --git a/lib/bkctld-is-on b/lib/bkctld-is-on index 9a96b05..36deafb 100755 --- a/lib/bkctld-is-on +++ b/lib/bkctld-is-on @@ -10,7 +10,7 @@ LIBDIR="$(dirname $0)" && . "${LIBDIR}/includes" jail_name="${1:?}" if [ -z "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" && exit 1 + show_help && exit 1 fi jail_path=$(jail_path "${jail_name}") diff --git a/lib/bkctld-key b/lib/bkctld-key index 8384bf7..bfe6e51 100755 --- a/lib/bkctld-key +++ b/lib/bkctld-key @@ -11,7 +11,7 @@ jail_name="${1:?}" keyfile="${2:-}" if [ ! -n "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" && exit 1 + show_help && exit 1 fi jail_path=$(jail_path "${jail_name}") diff --git a/lib/bkctld-port b/lib/bkctld-port index e2bcf66..dffe4e9 100755 --- a/lib/bkctld-port +++ b/lib/bkctld-port @@ -11,7 +11,7 @@ jail_name="${1:?}" port="${2:-}" if [ ! -n "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" && exit 1 + show_help && exit 1 fi jail_path=$(jail_path "${jail_name}") diff --git a/lib/bkctld-reload b/lib/bkctld-reload index 310b23c..5feec92 100755 --- a/lib/bkctld-reload +++ b/lib/bkctld-reload @@ -9,7 +9,7 @@ LIBDIR="$(dirname $0)" && . "${LIBDIR}/includes" jail_name="${1:?}" if [ -z "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" && exit 1 + show_help && exit 1 fi jail_path=$(jail_path "${jail_name}") diff --git a/lib/bkctld-remove b/lib/bkctld-remove index 6303ac8..7b4b152 100755 --- a/lib/bkctld-remove +++ b/lib/bkctld-remove @@ -9,7 +9,7 @@ LIBDIR="$(dirname $0)" && . "${LIBDIR}/includes" jail_name="${1:?}" if [ -z "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" && exit 1 + show_help && exit 1 fi jail_path=$(jail_path "${jail_name}") incs_path=$(incs_path "${jail_name}") diff --git a/lib/bkctld-restart b/lib/bkctld-restart index f3f2e87..7aaa314 100755 --- a/lib/bkctld-restart +++ b/lib/bkctld-restart @@ -11,7 +11,7 @@ LIBDIR="$(dirname $0)" && . "${LIBDIR}/includes" jail_name="${1:?}" if [ -z "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" && exit 1 + show_help && exit 1 fi jail_path=$(jail_path "${jail_name}") diff --git a/lib/bkctld-start b/lib/bkctld-start index e25ff0b..a0d6f9c 100755 --- a/lib/bkctld-start +++ b/lib/bkctld-start @@ -9,7 +9,7 @@ LIBDIR="$(dirname $0)" && . "${LIBDIR}/includes" jail_name="${1:?}" if [ -z "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" && exit 1 + show_help && exit 1 fi jail_path=$(jail_path "${jail_name}") diff --git a/lib/bkctld-status b/lib/bkctld-status index c0908dc..80e6769 100755 --- a/lib/bkctld-status +++ b/lib/bkctld-status @@ -9,7 +9,7 @@ LIBDIR="$(dirname $0)" && . "${LIBDIR}/includes" jail_name="${1:?}" if [ ! -n "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" && exit 1 + show_help && exit 1 fi [ -d "${JAILDIR}/${jail_name}" ] || error "${jail_name} : jail is missing.\nUse '$0 status [all]' to get the status of all jails." diff --git a/lib/bkctld-stop b/lib/bkctld-stop index 50438c5..2d8a76f 100755 --- a/lib/bkctld-stop +++ b/lib/bkctld-stop @@ -9,7 +9,7 @@ LIBDIR="$(dirname $0)" && . "${LIBDIR}/includes" jail_name="${1:?}" if [ -z "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" && exit 1 + show_help && exit 1 fi jail_path=$(jail_path "${jail_name}") diff --git a/lib/bkctld-sync b/lib/bkctld-sync index cb87311..df18917 100755 --- a/lib/bkctld-sync +++ b/lib/bkctld-sync @@ -9,7 +9,7 @@ LIBDIR="$(dirname $0)" && . "${LIBDIR}/includes" jail_name="${1:?}" if [ -z "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" && exit 1 + show_help && exit 1 fi jail_path=$(jail_path "${jail_name}") jail_config_dir=$(jail_config_dir "${jail_name}") diff --git a/lib/bkctld-update b/lib/bkctld-update index bc64af2..3309030 100755 --- a/lib/bkctld-update +++ b/lib/bkctld-update @@ -9,7 +9,7 @@ LIBDIR="$(dirname $0)" && . "${LIBDIR}/includes" jail_name="${1:?}" if [ ! -n "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" && exit 1 + show_help && exit 1 fi jail_path=$(jail_path "${jail_name}") diff --git a/lib/bkctld-upgrade-config b/lib/bkctld-upgrade-config index 59c8e37..054ade4 100644 --- a/lib/bkctld-upgrade-config +++ b/lib/bkctld-upgrade-config @@ -1,7 +1,7 @@ #!/bin/sh # -# Update jail or all -# Usage: update |all +# Upgrade chroot components for jail or all +# Usage: upgrade-config |all # # shellcheck source=./includes @@ -9,7 +9,7 @@ LIBDIR="$(dirname $0)" && . "${LIBDIR}/includes" jail_name="${1:?}" if [ ! -n "${jail_name}" ]; then - "${LIBDIR}/bkctld-help" && exit 1 + show_help && exit 1 fi jail_path=$(jail_path "${jail_name}") diff --git a/lib/includes b/lib/includes index f0d21f7..92c2a47 100755 --- a/lib/includes +++ b/lib/includes @@ -4,6 +4,10 @@ # [ -f /etc/default/bkctld ] && . /etc/default/bkctld + +# shellcheck disable=SC2034 +VERSION="2.5.1" + LIBDIR=${LIBDIR:-/usr/lib/bkctld} CONFDIR="${CONFDIR:-/etc/evobackup}" BACKUP_DISK="${BACKUP_DISK:-}" @@ -24,6 +28,39 @@ CRITICAL="${CRITICAL:-48}" WARNING="${WARNING:-24}" DUC=$(command -v duc-nox || command -v duc) +show_version() { + cat <, + Victor Laborie , + Jérémy Lecour + and others. + +bkctld comes with ABSOLUTELY NO WARRANTY. This is free software, +and you are welcome to redistribute it under certain conditions. +See the GNU Affero General Public License v3.0 for details. +END +} +show_help() { + cat < [arguments] +Options + -h|--help|-? Display help + -V|--version Display version, authors and license +Subcommands: +EOF + + for subcommand in ${LIBDIR}/bkctld-*; do + name=$(basename "${subcommand}"|sed 's/^bkctld-//') + desc=$(grep -E "^#" "${subcommand}"|sed -n '3p'|sed "s/^# //") + usage=$(grep -E "^# Usage: ${name}" "${subcommand}"|sed "s/^# Usage: ${name}//") + printf " %- 15s %- 30s %- 40s\n" "${name}" "${usage}" "${desc}" + done + + printf "\n" +} + log_date() { echo "[$(date +"%Y-%m-%d %H:%M:%S")]" }