aboutsummaryrefslogtreecommitdiff
path: root/src/bin
diff options
context:
space:
mode:
authorB Stack <bgstack15@gmail.com>2020-01-12 18:42:10 -0500
committerB Stack <bgstack15@gmail.com>2020-01-12 18:42:10 -0500
commit595982218707cbbe30e7920d3a6af8f9398e32b0 (patch)
tree0b7071723719121a6cae63e403b05b63e4773101 /src/bin
parentWIP: initial commit, 5% done (diff)
downloadsystemdtl-595982218707cbbe30e7920d3a6af8f9398e32b0.tar.gz
systemdtl-595982218707cbbe30e7920d3a6af8f9398e32b0.tar.bz2
systemdtl-595982218707cbbe30e7920d3a6af8f9398e32b0.zip
WIP: add most parsing
Still need to add the commands to execute the action list.
Diffstat (limited to 'src/bin')
-rwxr-xr-xsrc/bin/systemctl280
-rwxr-xr-xsrc/bin/systemctl.ver165
2 files changed, 0 insertions, 345 deletions
diff --git a/src/bin/systemctl b/src/bin/systemctl
deleted file mode 100755
index 2f3201e..0000000
--- a/src/bin/systemctl
+++ /dev/null
@@ -1,280 +0,0 @@
-#!/bin/sh
-# Filename: systemctl
-# Location:
-# Author: bgstack15@gmail.com
-# Startdate: 2020-01-10 13:02:14
-# Title:
-# Purpose:
-# Package: systemdtl
-# History:
-# Usage:
-# Reference: ftemplate.sh 2019-05-02a ; framework.sh 2018-05-02a
-# Improve:
-fiversion="2019-05-02a"
-systemctlversion="2020-01-10a"
-
-usage() {
- ${PAGER:-/usr/bin/less -F} >&2 <<ENDUSAGE
-usage: systemctl [-duV] [-c conffile]
-version ${systemctlversion}
- -d debug Show debugging info, including parsed variables.
- -u usage Show this usage block.
- -V version Show script version number.
- -c conf Read in this config file.
-Return values:
- 0 Normal
- 1 Help or version info displayed
- 2 Count or type of flaglessvals is incorrect
- 3 Incorrect OS type
- 4 Unable to find dependency
- 5 Not run as root or sudo
-ENDUSAGE
-}
-
-# DEFINE FUNCTIONS
-
-# DEFINE TRAPS
-
-clean_systemctl() {
- # use at end of entire script if you need to clean up tmpfiles
- # rm -f "${tmpfile1}" "${tmpfile2}" 2>/dev/null
-
- # Delayed cleanup
- if test -z "${SYSTEMCTL_NO_CLEAN}" ;
- then
-# nohup /bin/bash <<EOF 1>/dev/null 2>&1 &
-#sleep "${SYSTEMCTL_CLEANUP_SEC:-300}" ; /bin/rm -r "${SYSTEMCTL_TMPDIR:-NOTHINGTODELETE}" 1>/dev/null 2>&1 ;
-#EOF
- /bin/rm -r "${SYSTEMCTL_TMPDIR:-NOTHINGTODELETE}" 1>/dev/null 2>&1 ;
- fi
-}
-
-CTRLC() {
- # use with: trap "CTRLC" 2
- # useful for controlling the ctrl+c keystroke
- :
-}
-
-CTRLZ() {
- # use with: trap "CTRLZ" 18
- # useful for controlling the ctrl+z keystroke
- :
-}
-
-parseFlag() {
- flag="$1"
- hasval=0
- case ${flag} in
- # INSERT FLAGS HERE
- "d" | "debug" | "DEBUG" | "dd" ) setdebug ; ferror "debug level ${debug}" ; __debug_set_by_param=1 ;;
- "u" | "usage" | "help" | "h" ) usage ; exit 1 ;;
- "V" | "fcheck" | "version" ) ferror "${scriptfile} version ${systemctlversion}" ; exit 1 ;;
- #"i" | "infile" | "inputfile" ) getval ; infile1=${tempval} ;;
- "c" | "conf" | "conffile" | "config" ) getval ; conffile="${tempval}" ;;
- "now" ) export SYSTEMCTL_NOW=1 ;;
- "full") export SYSTEMCTL_FULL=1 ;;
- "system") export SYSTEMCTL_SYSTEM=1 ;;
- esac
-
- debuglev 10 && { test ${hasval} -eq 1 && ferror "flag: ${flag} = ${tempval}" || ferror "flag: ${flag}" ; }
-}
-
-# DETERMINE LOCATION OF FRAMEWORK
-f_needed=20181030
-___frameworkpath="$( find $( echo "${FRAMEWORKPATH}" | tr ':' ' ' ) -maxdepth 1 -mindepth 0 -name 'framework.sh' 2>/dev/null )"
-while read flocation ; do if test -e ${flocation} ; then __thisfver="$( sh ${flocation} --fcheck 2>/dev/null )" ; if test ${__thisfver:-0} -ge ${f_needed} ; then frameworkscript="${flocation}" ; break ; elif test -n "${___thisfver}" ; then printf "Obsolete: %s %s\n" "${flocation}" "${__thisfver}" 1>&2 ; fi ; fi ; done <<EOFLOCATIONS
-${FRAMEWORKBIN:-/bin/false}
-${___frameworkpath:-/bin/false}
-./framework.sh
-${scriptdir}/framework.sh
-$HOME/bin/bgscripts/framework.sh
-$HOME/bin/framework.sh
-$HOME/bgscripts/framework.sh
-$HOME/framework.sh
-$HOME/.local/share/bgscripts/framework.sh
-/usr/local/bin/bgscripts/framework.sh
-/usr/local/bin/framework.sh
-/usr/bin/bgscripts/framework.sh
-/usr/bin/framework.sh
-/bin/bgscripts/framework.sh
-/usr/local/share/bgscripts/framework.sh
-/usr/share/bgscripts/framework.sh
-EOFLOCATIONS
-test -z "${frameworkscript}" && echo "$0: framework ${f_needed} not found. Try setting FRAMEWORKPATH. Aborted." 1>&2 && exit 4
-
-# INITIALIZE VARIABLES
-# variables set in framework:
-# today server thistty scriptdir scriptfile scripttrim
-# is_cronjob stdin_piped stdout_piped stderr_piped sendsh sendopts
-. ${frameworkscript} || echo "$0: framework did not run properly. Continuing..." 1>&2
-infile1=
-outfile1=
-logfile=/var/log/systemctl.log
-define_if_new interestedparties "bgstack15@gmail.com"
-# SIMPLECONF
-#define_if_new default_conffile "/etc/systemctl/systemctl.conf"
-#define_if_new defuser_conffile ~/.config/systemctl/systemctl.conf
-#define_if_new SYSTEMCTL_TMPDIR "$( mktemp -d )"
-#tmpfile1="$( TMPDIR="${SYSTEMCTL_TMPDIR}" mktemp )"
-#tmpfile2="$( TMPDIR="${SYSTEMCTL_TMPDIR}" mktemp )"
-
-# REACT TO OPERATING SYSTEM TYPE
-case $( uname -s ) in
- Linux) : ;;
- FreeBSD) : ;;
- *) echo "${scriptfile}: 3. Indeterminate OS: $( uname -s )" 1>&2 && exit 3 ;;
-esac
-
-## REACT TO ROOT STATUS
-#case ${is_root} in
-# 1) # proper root
-# : ;;
-# sudo) # sudo to root
-# : ;;
-# "") # not root at all
-# #ferror "${scriptfile}: 5. Please run as root or sudo. Aborted."
-# #exit 5
-# :
-# ;;
-#esac
-
-# SET CUSTOM SCRIPT AND VALUES
-#setval 1 sendsh sendopts<<EOFSENDSH # if $1="1" then setvalout="critical-fail" on failure
-#/usr/local/share/bgscripts/send.sh -hs # setvalout maybe be "fail" otherwise
-#/usr/share/bgscripts/send.sh -hs # on success, setvalout="valid-sendsh"
-#/usr/local/bin/send.sh -hs
-#/usr/bin/mail -s
-#EOFSENDSH
-#test "${setvalout}" = "critical-fail" && ferror "${scriptfile}: 4. mailer not found. Aborted." && exit 4
-
-# VALIDATE PARAMETERS
-# objects before the dash are options, which get filled with the optvals
-# to debug flags, use option DEBUG. Variables set in framework: fallopts
-validateparams action - "$@"
-
-# LEARN EX_DEBUG
-test -z "${__debug_set_by_param}" && fisnum "${SYSTEMCTL_DEBUG}" && debug="${SYSTEMCTL_DEBUG}"
-
-# CONFIRM TOTAL NUMBER OF FLAGLESSVALS IS CORRECT
-#if test ${thiscount} -lt 2 ;
-#then
-# ferror "${scriptfile}: 2. Fewer than 2 flaglessvals. Aborted."
-# exit 2
-#fi
-
-## LOAD CONFIG FROM SIMPLECONF
-## This section follows a simple hierarchy of precedence, with first being used:
-## 1. parameters and flags
-## 2. environment
-## 3. config file
-## 4. default user config: ~/.config/script/script.conf
-## 5. default config: /etc/script/script.conf
-#if test -f "${conffile}" ;
-#then
-# get_conf "${conffile}"
-#else
-# if test "${conffile}" = "${default_conffile}" || test "${conffile}" = "${defuser_conffile}" ; then : ; else test -n "${conffile}" && ferror "${scriptfile}: Ignoring conf file which is not found: ${conffile}." ; fi
-#fi
-#test -f "${defuser_conffile}" && get_conf "${defuser_conffile}"
-#test -f "${default_conffile}" && get_conf "${default_conffile}"
-
-# CONFIGURE VARIABLES AFTER PARAMETERS
-
-## START READ CONFIG FILE TEMPLATE
-#oIFS="${IFS}" ; IFS="$( printf '\n' )"
-#infiledata=$( ${sed} ':loop;/^\/\*/{s/.//;:ccom;s,^.[^*]*,,;/^$/n;/^\*\//{s/..//;bloop;};bccom;}' "${infile1}") #the crazy sed removes c style multiline comments
-#IFS="${oIFS}" ; infilelines=$( echo "${infiledata}" | wc -l )
-#{ echo "${infiledata}" ; echo "ENDOFFILE" ; } | {
-# while read line ; do
-# # the crazy sed removes leading and trailing whitespace, blank lines, and comments
-# if test ! "${line}" = "ENDOFFILE" ;
-# then
-# line=$( echo "${line}" | sed -e 's/^\s*//;s/\s*$//;/^[#$]/d;s/\s*[^\]#.*$//;' )
-# if test -n "${line}" ;
-# then
-# debuglev 8 && ferror "line=\"${line}\""
-# if echo "${line}" | grep -qiE "\[.*\]" ;
-# then
-# # new zone
-# zone=$( echo "${line}" | tr -d '[]' )
-# debuglev 7 && ferror "zone=${zone}"
-# else
-# # directive
-# varname=$( echo "${line}" | awk -F= '{print $1}' )
-# varval=$( echo "${line}" | awk -F= '{$1="" ; printf "%s", $0}' | sed 's/^ //;' )
-# debuglev 7 && ferror "${zone}${varname}=\"${varval}\""
-# # simple define variable
-# eval "${zone}${varname}=\${varval}"
-# fi
-# ## this part is untested
-# #read -p "Please type something here:" response < ${thistty}
-# #echo "${response}"
-# fi
-# else
-
-## REACT TO BEING A CRONJOB
-#if test ${is_cronjob} -eq 1 ;
-#then
-# :
-#else
-# :
-#fi
-
-# SET TRAPS
-#trap "CTRLC" 2
-#trap "CTRLZ" 18
-trap '__ec=$? ; clean_systemctl ; trap "" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ; exit ${__ec} ;' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
-
-# DEBUG SIMPLECONF
-debuglev 5 && {
- ferror "Using values"
- # used values: EX_(OPT1|OPT2|VERBOSE)
- set | grep -iE "^SYSTEMCTL_" 1>&2
-}
-
-# MAIN LOOP
-#{
- #printf "%s\n" "${*}" >> "${logfile}"
- #echo "thiscount=${thiscount}"
- #x=1
- #while test ${x:-${thiscount}} -le $(( thiscount - 1 )) && test ${thiscount} -gt 1 ;
- #do
- # eval thisopt="\${opt${x}}"
- # echo "thisopt${x}=${thisopt}"
- # x=$(( x + 1 ))
- #done
-
- # actions
- actionlist=""
- case "${action}" in
- start|stop|status)
- x=1
- while test ${x:-${thiscount}} -le $(( thiscount - 1 )) && test ${thiscount} -gt 1 ;
- do
- eval thisopt="\${opt${x}}"
- thisopt="$( echo "${thisopt}" | sed -r -e 's/\.service$//;' )"
- actionstatement="$( printf "%s" "service ${thisopt} ${action};" )"
- actionlist="${actionlist:+${actionlist} }${actionstatement}"
- x=$(( x + 1 ))
- done
- ;;
- enable|disable)
- # action should be update-rc.d ${thisopt} ${action}
- echo "WORK IN PROGRESS"
- ;;
- *)
- ferror "Fatal! 2. Unable to understand action ${action}. Aborted."
- ;;
- esac
-
- # list of actions
- echo "Need to perform these commands:"
- echo "${actionlist}"
-#} | tee -a ${logfile}
-
-# EMAIL LOGFILE
-#${sendsh} ${sendopts} "${server} ${scriptfile} out" ${logfile} ${interestedparties}
-
-## STOP THE READ CONFIG FILE
-#return_code 0
-#fi ; done ; }
diff --git a/src/bin/systemctl.ver1 b/src/bin/systemctl.ver1
deleted file mode 100755
index 74f29c4..0000000
--- a/src/bin/systemctl.ver1
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/sh
-# goal: handle various systemctl commands, particularly for freeipa
-# restart X(.service)?
-# start
-# stop
-# enable
-# status
-# disable
-# mask
-# unmask
-# is-enabled
-# list-unit-files --full
-# is-active
-# reload-or-try-restart X
-# condrestart X
-# daemon-reload --system
-# --now
-
-# log all parameters to learn usage
-logfile=/var/log/systemctl.log
-printf "%s\n" "${*}" >> "${logfile}"
-
-evalparam() {
- # call: evalparam "${_x}" "word/single/double" "${_thisparam}" "${_nextparam}"
- printf "%s\n" "evalparam $*"
- __paramposition="${1}"
- __paramflaglevel="${2}"
- __param="${3}"
- __nextparam="${4}"
- case "${__param}" in
- "now")
- esac
-}
-
-# iterate through all parameters
-_param_count="${#}"
-_x=0
-while test ${_x} -lt ${_param_count} ;
-do
- _x=$(( _x + 1 ))
- eval _thisparam="\${${_x}}"
- test ${_x} -lt ${_param_count} && eval _nextparam="\${$(( _x + 1 ))}" || unset _nextparam
- #printf "%s\n" "param ${_x} is \"${_thisparam}\" and next is \"${_nextparam:-UNDEFINED}\""
- case "${_thisparam}" in
- --*)
- #printf "%s\n" "This is a double-dash! Send the whole thing."
- evalparam "${_x}" "double" "${_thisparam##--}" "${_nextparam:-UNDEFINED}"
- ;;
- -*)
- #printf "%s\n" "This is a single dash! Send each char."
- _i=2
- while test ${_i} -le ${#_thisparam} ;
- do
- _char="$( printf '%s' "${_thisparam}" | cut -c ${_i})"
- evalparam "${_x}" "single" "${_char}" "${_nextparam:-UNDEFINED}" "$(( _i -1 ))"
- _i=$(( _i + 1 ))
- done
- unset _char
- ;;
- *)
- #printf "%s\n" "No dash. Evaluate this as a word."
- evalparam "${_x}" "word" "${_thisparam}" "${_nextparam:-UNDEFINED}"
- ;;
- esac
-done
bgstack15