# FIXME maybe PROG_PATH__ for better error reporting?
PROG_NAME__="" # initialised within init section
+# directory for init scripts
+INITD_DIR__="/etc/init.d/"
+
# >= level and the function will print the message
EPRINT__=1 # eprint (error print)
EEPRINT__=2 # 2print (intern error print)
CMD_LINE__="" # /proc/cmdline
+LANG__="$LANG"
+LC_ALL__="$LC_ALL"
+
# CONFIG FUNCTIONS {{{
function disableSyslog { SYSLOG__="NO"; }
function enableSyslog { SYSLOG__="YES"; }
+
+function saveLang { LANG__="$LANG"; LC_ALL__="$LC_ALL"; }
+function restoreLang { LANG="$LANG__"; LC_ALL="$LC_ALL__"; }
+function setCLang { saveLang; LANG="C"; LC_ALL="C"; }
# }}}
function restoreVerbose { VERBOSE__=$VERBOSE_TMP__; }
function getVerbose { echo "$VERBOSE__"; }
+function setDebug { setVerbose "$DPRINT__"; }
+function unsetDebug { restoreVerbose; }
+
function setExitFunction { EXIT_FUNCTION__="$1"; }
function resetExitFunction { EXIT_FUNCTION__="_syslog"; }
# }}}
#
###
+##
+# ATTENTION... THIS FUNCTINOS IS A BIG SECURITY HOLE
+# this function will be changed in future release
+##
# i don't want to write exit status controle stuff every time
function execute
{
local ret_=''
+ # NOT A GOOD IDEA
eval "$to_exec_"
ret_=$?
if [ -e "$file_to_test_" ]; then
if [ -z "$message_" ]; then
- $error_function_ "file does allready exist \"$file_to_test_\"" 67
+ $error_function_ "file does already exist \"$file_to_test_\"" 67
else
$error_function_ "$message_"
fi
checkId 0 "$1" "$2"
}
+function isGrml
+{
+ if [ -f /etc/grml_version ] ; then
+ dprint "isGrml(): this seems to be a grml system"
+ return 0
+ else
+ dprint "isGrml(): this is not a grml system"
+ return 1
+ fi
+}
function runsFromHd
{
function relToAbs
{
local relpath_="$1"
-
- local D_=''
- local B_=''
local abspath_=''
- local end_path_=''
- D_=`dirname "$relpath_"`
- B_=`basename "$relpath_"`
- abspath_=`cd "$D_" 2>/dev/null && pwd || echo "$D_"`/$B_
- end_path_=`echo "$abspath_" |tr --squeeze-repeats /`
- dprint "relToAbs(): \"$relpath_\" => \"$end_path_\""
- echo "$end_path_"
+ abspath_="`readlink -f \"$relpath_\"`" || \
+ warn "relToAbs(): Problems getting absolute path" "$?" || return 1
+ dprint "relToAbs(): \"$relpath_\" => \"$abspath_\""
+ echo "$abspath_"
}
# Simple shell grep
return $ret_
}
+function netGetIfaces
+{
+ local error_function_=${1:-"eprint"} # function to call on error
+ local message_="$2" # user supplied error message
+ local if_=''
+ local ret_=''
+
+ #ip a|grep 'inet ' |awk '$NF !~ /lo/{print $NF}'
+ if_="`ip a|grep 'inet ' |awk '{print $NF}'`"
+ ret_=$?
+ if [ -z "$if_" ]; then
+ if [ -z "$message_" ]; then
+ "$error_function_" "no interfaces found" $ret_
+ else
+ "$error_function_" "$message_" $ret_
+ fi
+ return 1
+ fi
+ dprint "interfaces found" $ret_
+ echo "$if_"
+}
+
# FIXME
function netGetDefaultGateway
{
local error_function_=${1:-"eprint"} # function to call on error
local message_="$2" # user supplied error message
- local LANG=C
- local LC_ALL=C
local ip_=''
local ret_=''
+ setCLang
ip_=`route -n | awk '/^0\.0\.0\.0/{print $2; exit}'`
ret_=$?
+ restoreLang
if [ -z "$ip_" ]; then
if [ -z "$message_" ]; then
"$error_function_" "no default gateway found" $ret_
local error_function_=${2:-"eprint"} # function to call on error
local message_="$3" # user supplied error message
- local LANG=C
- local LC_ALL=C
local nm_=''
local ret_=''
+ setCLang
nm_=`ifconfig "$iface_" | awk '/[Mm]ask/{FS="[: ]*"; $0=$0; print $8; exit}'`
ret_=$?
+ restoreLang
if [ -z "$nm_" ]; then
if [ -z "$message_" ]; then
"$error_function_" "could not find a netmask for \"$iface_\"" $ret_
local error_function_=${2:-"eprint"} # function to call on error
local message_="$3" # user supplied error message
- local LANG=C
- local LC_ALL=C
local ip_=""
local ret_=""
+ setCLang
#ip_=`ip addr list eth0 |mawk '/inet/{split($2,A,"/"); print A[1]}'`
ip_=`ifconfig "$iface_" | awk '/[Ii]net [Aa]ddr/{FS="[: ]*"; $0=$0; print $4; exit}'`
ret_=$?
+ restoreLang
if [ -z "$ip_" ]; then
if [ -z "$message_" ]; then
"$error_function_" "no ip for \"$iface_\" found" $ret_
return 1
fi
- ns_=`awk '/^nameserver/{printf "%s ",$2}' $file_`
+ setCLang
+ ns_=`awk '/^nameserver/{printf "%s ",$2}' $file_ |xargs echo`
+ restoreLang
if [ -z "$ns_" ]; then
if [ -z "$message_" ]; then
"$error_function_" "no nameservers found" $ret_
# }}}
+# SERVICES {{{
+function _touchService
+{
+ local action_="${1:-"start"}"
+ local service_="$2"
+ local error_function_=${3:-"eprint"} # function to call on error
+ local message_="$4" # user supplied error message
+
+ local i=""
+ local known_action_='false'
+ for i in "start" "stop" "restart" "reload" "force-reload"; do
+ if [[ $i == $action_ ]]; then
+ known_action_='true'
+ break
+ fi
+ done
+ $known_action_ || warn "_touchService(): unknown action \"$action_\""
+
+
+ local service_path_=""
+ service_path_="${INITD_DIR__}/$service_"
+ if [ ! -e "$service_path_" ]; then
+ warn "_touchService(): service does not exist: \"$service_\""
+ return 1
+ fi
+ if [ ! -x "$service_path_" ]; then
+ warn "_touchService(): service is not executable: \"$service_\""
+ fi
+
+ local ret_=""
+ "$service_path_" "$action_"
+ ret_=$?
+ if [[ $ret_ != 0 ]]; then
+ if [ -z "$message_" ]; then
+ "$error_function_" "Problems ${action_}ing service \"$service_\"" $ret_
+ else
+ "$error_function_" "$message_" $ret_
+ fi
+ return 1
+ fi
+ dprint "_touchService(): successfully started service \"$service_\""
+ return 0
+}
+
+function _createServiceFunctions
+{
+ for i in "start" "stop" "restart" "reload"; do
+ eval "function ${i}Service { _touchService ${i} \"\$1\" \"\$2\" \"\$3\"; }"
+ done
+ eval "function forceReloadService { _touchService force-reload \"\$1\" \"\$2\" \"\$3\"; }"
+}
+_createServiceFunctions
+# }}}
# prints the next free /dev/loop* to stdout
function findNextFreeLoop
return 1
}
_checkBootParam
+
+
+function _setDebugLevel
+{
+ local debug_="${DEBUG:-0}"
+ VERBOSE__="$debug_"
+}
+_setDebugLevel
# }}}
# END OF FILE
################################################################################
-# vim:foldmethod=marker
+# vim:foldmethod=marker expandtab shiftwidth=2 tabstop=2