added start,stop,restart,reload,force-reload - Service functions
[grml-shlib.git] / sh-lib
diff --git a/sh-lib b/sh-lib
index 4d858a9..27e8ff3 100644 (file)
--- a/sh-lib
+++ b/sh-lib
@@ -51,6 +51,9 @@ function unsetVerbose   { VERBOSE_TMP__=$VERBOSE__; VERBOSE__=0; }
 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"; }
 # }}}
@@ -430,24 +433,24 @@ function netValidIp
 
 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_"
+  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
@@ -562,6 +565,60 @@ function netGetNameservers
 
 # }}}
 
+# SERVICES {{{
+function _touchService
+{
+  local action_="${1:-"start"}"
+  local service_="$2"
+  local error_function_=${3:-"eprint"}    # function to call on error
+
+  local i=""
+  for i in "start" "stop" "restart" "reload" "force-reload"; do
+    if [[ $i == $action_ ]]; then
+      break
+    fi
+    $error_function_ "unknown action: \"$action\""
+    return 1
+  done
+
+  if [ ! -e "$service_" ]; then
+    $error_function_ "service does not exist: \"$service_\""
+    return 1
+  fi
+  if [ ! -x "$service_" ]; then
+    $error_function_ "service is not executable: \"$service_\""
+  fi
+  
+  /etc/init.d/$service_ $action_
+}
+
+function _createServiceFunctions
+{
+  for i in "start" "stop" "restart" "reload" "force-reload"; do
+    eval "\
+function ${i}Service
+{
+  local service_=\"\$1\"
+  local error_function_=\${2:-\"eprint\"}    # function to call on error
+  local message_=\"\$3\"    # user supplied error message
+  
+  local ret_=\"\"
+  _touchService ${i} \"\$service_\"
+  ret_=\$?
+  if [[ \$ret_ != 0 ]]; then
+    if [ -z \"\$message_\" ]; then
+      \"\$error_function_\" \"Problems ${i}ing service \"\$service_\"\" \$ret_
+    else
+      \"\$error_function_\" \"\$message_\" \$ret_
+    fi
+    return 1
+  fi
+}"
+  done
+}
+_createServiceFunctions
+
+# }}}
 
 # prints the next free /dev/loop* to stdout
 function findNextFreeLoop
@@ -644,8 +701,16 @@ function _checkBootParam
   return 1
 }
 _checkBootParam
+
+
+function _setDebugLevel
+{
+  local debug_="${DEBUG:-0}"
+  VERBOSE__="$debug_"
+}
+_checkBootParam
 # }}}
 
 # END OF FILE
 ################################################################################
-# vim:foldmethod=marker
+# vim:foldmethod=marker expandtab shiftwidth=2 tabstop=2