#
# Remote Host Manager - UNIX System Administration host management tool.
# Copyright (C) 2010, David Paper <cerberus@ginch.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
#
# $Id$
#
# Purpose: Common functions to import to each tool
#
#Var initializations
. ../conf/rhm.conf
######
# Function: version
#
# Return current RHM version number
######
version() {
echo "RHM (Remote Host Manager)"
echo "Version 0.2-beta11 9/4/11"
}
######
# Function: logmsg
#
# Call logger to dump passed message to syslog
#
# Expects 2 variables to be passed:
# $1 = severity: err, info, debug
# $2 = message to log
#
######
logmsg() {
typeset SEV=${1}
typeset MSG=${2}
${LOGGER} -t ${0} -p local6.${SEV} "Severity=${SEV}; PID=$$; ${MSG};"
}
######
# Function: run
#
# Function to be able to pipe commands together and grab the exit code of each
#
# run cmd1 \| cmd2 \| cmd3
# exit codes are in $pipestatus_1, $pipestatus_2, $pipestatus_3
#
# From http://cfajohnson.com/shell/cus-faq-2.html#Q11
#
# With a few bug fixes related to needing more than 10 variables
######
run() {
j=1
while eval "\${pipestatus_$j+:} false"; do
unset pipestatus_$j
j=$(($j+1))
done
j=1 com= k=1 l=
for a; do
if [ "x${a}" = 'x|' ]; then
com="${com} { ${l} "'3>&-
echo "pipestatus_'${j}'=$?" >&3
} 4>&- |'
j=$((${j}+1)) l=
else
l="${l} \"\${${k}}\""
fi
k=$((${k}+1))
done
com="${com} ${l}"' 3>&- >&4 4>&-
echo "pipestatus_'${j}'=$?"'
exec 4>&1
eval "$(exec 3>&1; eval "$com")"
exec 4>&-
j=1
while eval "\${pipestatus_$j+:} false"; do
eval "[ \$pipestatus_$j -eq 0 ]" || return 1
j=$(($j+1))
done
return 0
}