+++ /dev/null
-#!/bin/bash
-
-HAS_TTY='y'
-
-# Defining colors
-RED=""
-YELLOW=""
-GREEN=""
-BLUE=""
-CYAN=""
-NORMAL=""
-
-VERSION="0.2.1"
-
-STD_SHORT_OPTIONS="sdvhV"
-STD_LONG_OPTIONS="simulate,debug,verbose,nocolor,help,version"
-STD_USAGE_MSG=$( cat <<-EOF
- -s|--simulate Simulation mode - dont apply any changes.
- -d|--debug Debug output (bash -x).
- -v|--verbose Set verbosity on.
- --nocolor Dont use colors on display.
- -h|--help Show this output and exit.
- -V|--version prints out version number of the script and exit
- EOF
- )
-
-# Standard global variables
-VERBOSE="n"
-DEBUG="n"
-DO_ASK="n"
-SIMULATE="n"
-
-declare -a REMAINING_ARGS=()
-declare -a REMAINING_OPTS=()
-
-NFS_HOMEDIR_PARENT='/mnt/nfs/home'
-
-DESCRIPTION="${DESCRIPTION:-Failing script description}"
-
-# LDAP Defaults
-LDAP_USR="cn=admin"
-LDAP_PWD_FILE="${HOME}/.private/ldap-admin-wonl.txt"
-LDAP_BASE="o=isp"
-LDAP_HOST="ldap.pixelpark.com"
-LDAP_PORT=389
-
-LDAP_STD_OPTS_SHORT="D:y:H:P:b:"
-LDAP_STD_OPTS_LONG="bind-dn:,password-file:,ldap-host:,ldap-port:,base-dn:"
-
-LDAP_USAGE_MSG=$( cat <<-EOF
- -D|--bind-dn DN
- Use this Distinguished Name DN to bind to the LDAP directory.
- (Default: '${LDAP_USR}').
- -y|--password-file FILE
- Use complete contents of PASSWD_FILE as the password for simple authentication
- (Default: '${LDAP_PWD_FILE}').
- -H|--ldap-host HOSTNAME
- The hostname or IP address of the LDAP-Server (Default: '${LDAP_HOST}').
- -P|--ldap-port PORT
- The port number of the LDAP-Server (Default: ${LDAP_PORT}).
- -b|--base-dn SEARCH_BASE
- The starting point for the LDAP search (Default: '${LDAP_BASE}')
- EOF
- )
-
-#-------------------------------------------------------------------
-detect_color() {
-
- local safe_term="${TERM//[^[:alnum:]]/?}"
- local match_lhs=""
- local use_color="false"
- local term=
-
- if [[ -f ~/.dir_colors ]] ; then
- match_lhs="${match_lhs}$( cat ~/.dir_colors | grep '^TERM ' | sed -e 's/^TERM *//' -e 's/ .*//')"
- fi
- if [[ -f /etc/DIR_COLORS ]] ; then
- match_lhs="${match_lhs}$( cat /etc/DIR_COLORS | grep '^TERM ' | sed -e 's/^TERM *//' -e 's/ .*//')"
- fi
- if [[ -z ${match_lhs} ]] ; then
- type -P dircolors >/dev/null && \
- match_lhs=$(dircolors --print-database | grep '^TERM ' | sed -e 's/^TERM *//' -e 's/ .*//')
- fi
- for term in ${match_lhs} ; do
- if [[ "${safe_term}" == ${term} || "${TERM}" == ${term} ]] ; then
- use_color="true"
- break
- fi
- done
-
- # console colors:
- if [ "${use_color}" = "true" ] ; then
- RED="\033[38;5;196m"
- YELLOW="\033[38;5;226m"
- GREEN="\033[38;5;46m"
- BLUE="\033[38;5;27m"
- CYAN="\033[38;5;14m"
- NORMAL="\033[39m"
- else
- RED=""
- YELLOW=""
- GREEN=""
- BLUE=""
- CYAN=""
- NORMAL=""
- fi
-
- local my_tty=$(tty)
- if [[ "${my_tty}" =~ 'not a tty' ]] ; then
- my_tty='-'
- fi
-
- if [[ "${my_tty}" = '-' || "${safe_term}" = "dump" ]] ; then
- HAS_TTY='n'
- fi
-
-}
-
-#------------------------------------------------------------------------------
-description() {
- echo -e "${DESCRIPTION}"
-}
-
-#------------------------------------------------------------------------------
-eval_common_options() {
-
- REMAINING_ARGS=()
- REMAINING_OPTS=()
-
- if [[ "$#" -gt 0 ]] ; then
- while true ; do
- case "$1" in
- -s|--simulate)
- SIMULATE="y"
- shift
- ;;
- -d|--debug)
- DEBUG="y"
- shift
- ;;
- -v|--verbose)
- VERBOSE="y"
- shift
- ;;
- --nocolor)
- RED=""
- YELLOW=""
- GREEN=""
- BLUE=""
- CYAN=""
- NORMAL=""
- shift
- ;;
- -h|--help)
- description
- echo
- usage
- exit 0
- ;;
- -V|--version)
- echo "${BASE_NAME} version: ${VERSION}"
- exit 0
- ;;
- --) shift
- break
- ;;
- *) REMAINING_OPTS+=($1)
- shift
- ;;
- esac
- done
- fi
-
- if [[ "${DEBUG}" = "y" ]] ; then
- set -x
- fi
-
- if [[ "$#" -gt "0" ]] ; then
- REMAINING_ARGS=("--")
- while [[ "$#" -gt "0" ]] ; do
- REMAINING_ARGS+=($1)
- shift
- done
- fi
-
- if [[ "${SIMULATE}" == "y" ]] ; then
- echo
- echo -e "${CYAN}Simulation mode!${NORMAL}"
- echo "Nothing is really done."
- echo
- fi
-
-}
-
-#------------------------------------------------------------------------------
-eval_ldap_options() {
-
- REMAINING_ARGS=()
- REMAINING_OPTS=()
-
- if [[ "$#" -gt 0 ]] ; then
- while true ; do
- case "$1" in
- -D|--bind-dn)
- LDAP_USR="$2"
- shift
- shift
- ;;
- -y|--password-file)
- LDAP_PWD_FILE="$2"
- shift
- shift
- ;;
- -H|--ldap-host)
- LDAP_HOST="$2"
- shift
- shift
- ;;
- -P|--ldap-port)
- LDAP_PORT="$2"
- shift
- shift
- ;;
- -b|--base-dn)
- LDAP_BASE="$2"
- shift
- shift
- ;;
- --) shift
- break
- ;;
- *) REMAINING_OPTS+=($1)
- shift
- ;;
- esac
- done
- fi
-
- if [[ "$#" -gt "0" ]] ; then
- REMAINING_ARGS=("--")
- while [[ "$#" -gt "0" ]] ; do
- REMAINING_ARGS+=($1)
- shift
- done
- fi
-
- if [[ ! -f "${LDAP_PWD_FILE}" ]] ; then
- error "Password file '${RED}${LDAP_PWD_FILE}'${NORMAL} not found."
- exit 3
- fi
-
- if [[ ! -r "${LDAP_PWD_FILE}" ]] ; then
- error "Password file '${RED}${LDAP_PWD_FILE}${NORMAL}' not readable."
- exit 3
- fi
-
-}
-
-#------------------------------------------------------------------------------
-my_date() {
- date --rfc-3339=seconds
-}
-
-#------------------------------------------------------------------------------
-debug() {
- if [[ "${VERBOSE}" != "y" ]] ; then
- return 0
- fi
- echo -e " * [$(my_date)] [${BASE_NAME}:${CYAN}DEBUG${NORMAL}]: $@" >&2
-}
-
-#------------------------------------------------------------------------------
-info() {
- echo -e " ${GREEN}*${NORMAL} [$(my_date)] [${BASE_NAME}:${GREEN}INFO${NORMAL}] : $@" >&2
-}
-
-#------------------------------------------------------------------------------
-warn() {
- echo -e " ${YELLOW}*${NORMAL} [$(my_date)] [${BASE_NAME}:${YELLOW}WARN${NORMAL}] : $@" >&2
-}
-
-#------------------------------------------------------------------------------
-error() {
- echo -e " ${RED}*${NORMAL} [$(my_date)] [${BASE_NAME}:${RED}ERROR${NORMAL}]: $@" >&2
-}
-
-#------------------------------------------------------------------------------
-RM() {
-
- if [[ "${SIMULATE}" == "y" ]] ; then
- debug "Simulated removing of: $*"
- return
- fi
- if [[ "${VERBOSE}" != "y" ]] ; then
- rm "$@"
- else
- rm --verbose "$@"
- fi
-
-}
-
-#------------------------------------------------------------------------------
-set_locale() {
-
- local new_locale="$1"
- local loc=
- local found="n"
-
- local oifs="${IFS}"
- IFS="
-"
- for loc in $( locale -a ); do
- if [[ "${loc}" == "${new_locale}" ]] ; then
- found="y"
- break
- fi
- done
- IFS="${oifs}"
-
- if [[ "${found}" != "y" ]] ; then
- error "Locale '${RED}${new_locale}${NORMAL}' not found."
- else
- LANG="${new_locale}"
- LC_ALL=
- LC_CTYPE="${new_locale}"
- LC_NUMERIC="${new_locale}"
- LC_TIME="${new_locale}"
- LC_COLLATE="${new_locale}"
- LC_MONETARY="${new_locale}"
- LC_MESSAGES="${new_locale}"
- LC_PAPER="${new_locale}"
- LC_NAME="${new_locale}"
- LC_ADDRESS="${new_locale}"
- LC_TELEPHONE="${new_locale}"
- LC_MEASUREMENT="${new_locale}"
- LC_IDENTIFICATION="${new_locale}"
- fi
-
-}
-
-# vim: filetype=sh ts=4 et list